eval { level2(); }; if($@) { print "Error $@"; #want to print stack trace HERE! } sub level2 { print "This is level2\n"; level3(); } sub level3 { print "This is level3\n"; $i = 0; while(($package, $filename, $line, $subroutine)=caller($i++)) { print "caller($i)=$package, $filename, $line, $subroutine\n"; } $zero = 0; $zero = 100 / $zero; }