Indeed. Also, I think it reads particularly nicely using
... DEBUG and print 'debugging'; ...
Which achieves the same optimisation in a single line:
C:\test>perl -le"use constant DEBUG=>0; print 'hi'; DEBUG and print 'd +ebugging'; print 'bye'" hi bye C:\test>perl -MO=Deparse -le"use constant DEBUG=>0; print 'hi'; DEBUG +and print 'debugging'; print 'bye'" BEGIN { $/ = "\n"; $\ = "\n"; } use constant ('DEBUG', 0); print 'hi'; '???'; print 'bye'; -e syntax OK
And you can take it a step further if you add -s to your shebang line as I habitually do, and avoid even having to edit the script to enable the debugging (note the order of the pragmas!):
#! perl -slw use constant DEBUG => $DEBUG; use strict; print 'hi'; DEBUG and print 'debugging'; print 'bye'; __END__ C:\test>t-debug.pl hi bye C:\test>t-debug.pl -DEBUG hi debugging bye C:\test>perl -MO=Deparse t-debug.pl BEGIN { $^W = 1; } BEGIN { $/ = "\n"; $\ = "\n"; } use constant ('DEBUG', $DEBUG); use strict 'refs'; print 'hi'; '???'; print 'bye'; C:\test>perl -MO=Deparse t-debug.pl -DEBUG BEGIN { $^W = 1; } BEGIN { $/ = "\n"; $\ = "\n"; } use constant ('DEBUG', $DEBUG); use strict 'refs'; print 'hi'; print 'debugging'; print 'bye';
In reply to Re^2: Clever optimisation: by design or luck?
by BrowserUk
in thread Clever optimisation: by design or luck?
by BrowserUk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |