$SIG{__DIE__} = sub { if (!defined($^S)) {warn "Compiling death\n"} elsif ($^S) {warn "Eval death\n"} else {warn "Other 'die':",@_,"\n"}; }; print 'Enter "e" to cause an eval death, "n" to skip runtime: '; $_=; eval 'die "^^This is an eval die\n";' if /e/; print "Eval tried to die with this err: $@\n" if $@; die "^^ Compiling or run-time death?" unless /n/;