in reply to RE: Easy, elemental, but cool debug trick.
in thread Easy, elemental, but cool debug trick.

Neat idea, but why remove them? I amlost always need to turn debugging back on sooner or later. How about something like this:
perl -i.bak -e 's/^(.+\$DEBUG.+)$/#$1/' foo.pl
to turn DEBUG off and then
perl -i.bak -e 's/^#(.+\$DEBUG.+)$/$1/' foo.pl
to turn it back on.

At which point, do we even need to define a variable? As a convention, any debug code would simply need #DEBUG hanging off the end and simply change the \$DEBUG part of the regex to look for #DEBUG.

Is it just me, or is there something very weird about using perl to preprocess perl?

This waste of time has been gratefully brought to you by
mikfire

Replies are listed 'Best First'.
RE: RE: RE: Easy, elemental, but cool debug trick.
by ZZamboni (Curate) on May 26, 2000 at 01:33 UTC
    This is very neat. Going one step further, to allow debug blocks:
    perl -pi.bak -e 's/^(.*)$/#$1/ if /\bDEBUG\b/../\bENDDEBUG\b/' foo.pl
    to remove the block, and
    perl -pi.bak -e 's/^#(.*)$/$1/ if /\bDEBUG\b/../\bENDDEBUG\b/' foo.pl
    To reenable it. Then you can do something like this:
    ... code # DEBUG debug code # ENDDEBUG ... more code
    And yes, there is something very weird about using Perl to pre-process Perl...

    --ZZamboni

      For the final interation, leave the DEBUG blocks always commented out. When you need to debug, simply try this:
      perl -e 's/^#(.*)$/$1/ if /\bDEBUG\b/../\bENDDEBUG\b/' foo.pl | perl
      and eliminate the intermediate file. Actually, more likely to reduce the odds I will ship code with the debug blocks still enabled :)

      mikfire