I meant specifically that local %SIG; does not appear to affect the signal handlers, even though it creates a local, empty %SIG, does not appear to be documented.
use warnings;
use strict;
use Data::Dumper;
local $SIG{__WARN__} = sub { warn "outer: $_[0]" };
warn "one\n";
{
local $SIG{__WARN__} = sub { warn "inner 1: $_[0]" };
warn "two\n";
{
local %SIG;
warn "three\n";
print Dumper(\%SIG);
{
local $SIG{__WARN__} = sub { warn "inner 2: $_[0]" };
warn "four\n";
}
}
warn "five\n";
}
warn "six\n";
__END__
outer: one
inner 1: two
inner 1: three
$VAR1 = {};
inner 2: four
five
outer: six
Okay, so the result for "five" isn't correct... looks like there really may be a bug somewhere. |