in reply to Debug code out of production systems
liz,
Thanks for writing this pragma. I like the idea and I have started using it immediately.
However, I don't like the name and I am sure that many others will object about it. While it is clear how it does the trick, it is really misleading about what the pragma does.
I would rather have a debug pragma, and a quick search and replace in your module shows that it can be done, so that a sample code would look like the following:
print "before\n"; =debug MIDDLE print "inside\n"; =cut print "after\n";
And when I call it with this pragma, it works just fine.
perl -Mdebug=MIDDLE test.pl
You could also implement it as a pragma with two parameters, one for the tag and one for the label to activate. Possible names would be "podebug," "debugpod," "tagdebug," or "debpod." Not really suggesting, just brainstorming.
Anyway, with this enhanced pragma, I would call my script as
perl -Mdebpod=debug,MIDDLE test.pl # or, if I change my mind about the tag, perl -Mdebpod=begin,MIDDLE test.pl
However, I should point out a possible problem. The following code contains valid POD but the embedded code doesn't get executed by the "begin" pragma. Not only that, but also the code after the POD block disappears.
print "before\n"; =pod Whatever I want to include here. Comments or code, it doesn't matter. =begin DEBUGGING print "inside\n"; =cut print "after\n";
Using the "begin" pragma, this code will only print "before\n". You should either fix it or amend the docs about this risk.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Debug code out of production systems
by liz (Monsignor) on Jan 25, 2004 at 00:09 UTC | |
by shotgunefx (Parson) on Jan 25, 2004 at 19:41 UTC |