On Wed, Feb 28, 2018 at 05:46:22PM +0100, demerphq wrote:
quoted
You're right. I cut down my example too much and dropped the necessary
eval magic. Try this:
-- >8 --
SIG{__DIE__} = sub {
CORE::die @_ if $^S || !defined($^S);
print STDERR "fatal: @_";
exit 128;
};
FWIW, this doesn't need to use CORE::die like that unless you have
code that overrides die() or CORE::GLOBAL::die, which would be pretty
unusual.
die() within $SIG{__DIE__} is special cased not to trigger $SIG{__DIE__} again.
Of course it doesn't hurt, but it might make a perl hacker do a double
take why you are doing it. Maybe add a comment like
# using CORE::die to armor against overridden die()
Thanks, I agree it should just be "die". I pulled this from an old
error-handling pattern I used in some of my scripts (which _does_
override die). I screwed it up when cutting it down the first time, but
then I didn't cut enough the second. :)
-Peff