use warnings;use strict; package What::Ever; $@=undef; $SIG{'__DIE__'} = sub { die "My global die: $@" } ; sub divide { local $SIG{'__DIE__'} = sub { die $@ }; eval { print STDERR 1/$_[0] , "\n"; } } ; { local $@; print STDERR "No exception:\n"; divide(1); print STDERR "Throw...\n"; divide(0); }; warn $@; # with this the warnings are shown // without none