$DEBUG=1; $DEBUG && warn "Doing foo!\n"; foo(); $DEBUG && warn "Done foo!\n"; #etc #### #!/usr/bin/perl -d:Trace Devel::Trace::trace('on'); # Enable print "Hello World\n"; foo(); Devel::Trace::trace('off'); # Disable foo(); sub foo{ print "Foo\n" } #### C:\>test.pl 2>out Hello World Foo Foo #### C:\>more out >> C:\test.pl:3: Devel::Trace::trace('on'); # Enable >> D:/Perl/site/lib/Devel/Trace.pm:31: my $arg = shift; >> D:/Perl/site/lib/Devel/Trace.pm:32: $arg = $tracearg{$arg} while exists $tracearg{$arg}; >> D:/Perl/site/lib/Devel/Trace.pm:33: $TRACE = $arg; >> C:\test.pl:5: print "Hello World\n"; >> C:\test.pl:7: foo(); >> C:\test.pl:13: sub foo{ print "Foo\n" } >> C:\test.pl:9: Devel::Trace::trace('off'); # Disable >> D:/Perl/site/lib/Devel/Trace.pm:31: my $arg = shift; >> D:/Perl/site/lib/Devel/Trace.pm:32: $arg = $tracearg{$arg} while exists $tracearg{$arg}; >> D:/Perl/site/lib/Devel/Trace.pm:33: $TRACE = $arg; C:\>