Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

constant line number reporting

by japhy (Canon)
on Sep 22, 2000 at 20:28 UTC ( [id://33651]=note: print w/replies, xml ) Need Help??


in reply to (Debugging, Tracing, Trace, Instrumenting) Automatic tracing of my Perl code?

Ok, try this. It's not guaranteed to work, but it should be better than trying to brave the multi-line problem from above.
package LineDebug; $LOADED = 0; $insert = qq<print "\\tDEBUG: " . __LINE__ . "\\n";\n>; sub import { return if $LOADED++; my $freq = (@_ == 3 && pop) || 1; my ($file) = (caller)[1]; my $code; open PROG, $file; while (<PROG>) { $code .= $_; if ($freq == 1) { next unless /\S/; $code =~ s/;\s*\n\z/; $insert/; } elsif ($. % $freq == 0) { if (!/\S/) { $code =~ s/\n\z/; $insert/ } else { $code =~ s/:;\s*\n\z/; $insert/ } } } close PROG; # print $code; eval $code; exit; } 1;
It's used like so:
use LineDebug; # code...
or
use LineDebug freq => 10; # code...
It will print the line number of the file on every line ending with a semicolon (THIS IS NOT 100% ACCURATE). Specifically, it will not do this on blank lines. If you give it a frequency argument, it will print every X lines, if that line ends in a semicolon or is blank.

$_="goto+F.print+chop;\n=yhpaj";F1:eval

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://33651]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2024-04-13 20:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found