eval { main () }; print STDERR "# $0: ", $@ and exit 1 if $@; exit 0; sub main { my $val = eval { test_sub () }; print "hi" if $@; } sub test_sub { die "test_sub dies" }