# the new $SIG{__DIE__} causes everything to die here: eval{ do_something(\@args) or die "'do_something()' failed: $!"; }; # This never gets reached if ( $@ ) { warn "Could not do_something(): [$@]"; something_else(); }