$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:\>