... eval { local $SIG{__WARN__} = sub { print STDERR "HOOKED __WARN__\n"; print STDERR Carp::longmess(); return(); }; local $SIG{__DIE__} = sub { print STDERR "HOOKED __DIE__\n"; print STDERR Carp::longmess(); exit(1); # or in your case return() }; # Examples - message not printed due to hooks. # CORE::warn("Warn Message:\n", @_, "\n"); # CORE::die("Died Message:\n", @_, "\n"); $DT = DateTime->new( year => $year, time_zone => $tz ); }; return if $@; ...