use strict; use warnings; use Carp; local $SIG{__DIE__} = sub { return if ($^S);# only trigger if not inside an eval block print STDERR "global die handler: ".Carp::longmess(@_); exit 1; }; eval { die "die_inside_eval!\n"; }; if ($@) { print "caught eval exception: $@\n"; } die "die_outside_eval!\n"; #### caught eval exception: die_inside_eval! global die handler: die_outside_eval! at dietest.pl line 19.