In Perl 5.8.0 the so-called safe signals were introduced. This
means that Perl no longer handles signals immediately but instead
between opcodes, when it is safe to do so. The earlier immediate
handling easily could corrupt the internal state of Perl, resulting
in mysterious crashes.
Its possible since perl 5.8.1 to globally disable this feature by using
the PERL_SIGNALS environment variables (as specified in
PERL_SIGNALS in perlrun); but theres no way to disable it locally, for a
short period of time. Thats however something you might want to do,
if, for example, your Perl program calls a C routine that will potentially
run for a long time and for which you want to set a timeout.
This module therefore allows you to define UNSAFE_SIGNALS blocks
in which signals will be handled unsafely.
Note that, no matter how short you make the unsafe block, it will still
be unsafe. Use with caution.