note
broquaint
According to [perlman:perlvar|the docs] <tt>$^S</tt> may be set inside the <tt>[perlfunc:die|die()]</tt> handler even if you're not inside an <tt>[perlfunc:eval|eval]</tt>. So that's why it appears that <tt>$SIG{__DIE__}</tt> has been reset. If you put a print statement before the <tt>[perlfunc:die|die()]</tt> you'll see that <tt>$^S</tt> is set within the <tt>$SIG{__DIE__}</tt> handler.
<code>
# slightly revised die() handler
sub die_handler {
# added this line
print "\$^S is set to $^S", $/;
die @_ if $^S;
print "ERROR: $_[0]\n (Check logs for more info)\n-----\n\n";
exit(1);
}
__output__
Warn before init! at die_code.pl line 3.
WARNING: Warned at die_code.pl line 7.
(Check logs for more info)
-----
$^S is set to 1
Caught: died inside eval!
$^S is set to 1
Died for real! at die_code.pl line 28.
</code>
<br>
HTH
<p>
broquaint
159307
159307