# untested my $defaultSigDie = $SIG{__DIE__}; $SIG{__DIE__} = \&SigDieHandler; sub doEval { local $SIG{__DIE__} = $defaultSigDie; my $result = eval $_[0]; return $result; }