Eric Frazier wrote:
...
> But then I found I was using 5.8.. Thanks to a guy on comp.lang.perl.misc I
> know that there is a change in how signals are handled, they call it
> deferred signal handling because Perl now is suppose to wait until the
> Interpeter is in a safe state. As I understand it this might avoid some
> things like core dumps or other errors related to dieing while trying to do
> something besides dieing.
Mostly, yes. Look at the perldelta manpage that is distributed with perl
5.8.0, section "Safe Signals".
If you want to restore the 5.6-ish "unsafe" signal handling, this is not
possible with 5.8.0 :(. But, as it has been acknowledged that this unsafe
behaviour is desirable in some cases, it will be possible with perl
5.8.1.
You can grab a 5.8.1 release candidate 4 from CPAN :
http://search.cpan.org/~jhi/
(RC5 should be out in a few days)
and see with it if using unsafe signal handlers solves your problem.
You can enable them with the PERL_SIGNALS environment variable.
Here's the relevant part of the perlrun manpage that comes with perl
5.8.1 RC4 :
=item PERL_SIGNALS
In Perls 5.8.1 and later. If set to C<unsafe> the pre-Perl-5.8.0
signals behaviour (immediate but unsafe) is restored. If set to
C<safe> the safe (or deferred) signals are used.
See L<perlipc/"Deferred Signals (Safe signals)">.
HTH.