use strict; use Carp; trace('foo'); trace('bar'); func(); sub func { trace('in func'); } sub trace { my $string = shift; my ($package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller(1); if($subroutine) { print "[$subroutine]: $string\n"; } else { print "[**IN MAIN**]: $string\n"; } } __END__ [**IN MAIN**]: foo [**IN MAIN**]: bar [main::func]: in func