#!/usr/bin/perl use strict; use warnings; use Carp; $SIG{__DIE__} = sub { die @_ if $^S; # skip handler for eval{} blocks mail(@_); }; sub mail { chomp(my $msg = shift); print qq(mailing "$msg"...\n\n); } sub test { eval { croak "bar"; }; # doesn't send mail croak "foo"; # sends mail (and dies) } test(); __END__ $ ./827866.pl mailing "foo at ./827866.pl line 19 main::test() called at ./827866.pl line 22"... foo at ./827866.pl line 19 main::test() called at ./827866.pl line 22