{ # block to hide $_exitcode from rest of program my $_exitcode; $SIG{__DIE__} = sub { die @_ if $^S; # don't run this handler from inside "eval" my $err = shift; chomp($err); print STDERR "DIE ERROR: $err\n"; $_exitcode = 2; }; END { $?=$_exitcode if defined $_exitcode } }