http://qs1969.pair.com?node_id=159513


in reply to warn/die hook mystery

According to the docs $^S may be set inside the die() handler even if you're not inside an eval. So that's why it appears that $SIG{__DIE__} has been reset. If you put a print statement before the die() you'll see that $^S is set within the $SIG{__DIE__} handler.
# 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.

HTH

broquaint