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