in reply to Embedded function or subroutine - which is better?
I don't know how perl pre-parses code on the fly ...
You can let Perl tell you how it parses your code; see O and B::Deparse.
The '???' deparser placeholder flags the non-compilation of an unreachable statement (update: or expression?).c:\@Work\Perl\monks>perl -wMstrict -MO=Deparse,-p -le "use constant DEBUG => 1; ;; DEBUG and debugIt(); ;; sub debugIt { print 'debugging it'; } " BEGIN { $^W = 1; } BEGIN { $/ = "\n"; $\ = "\n"; } use constant ('DEBUG', 1); use strict 'refs'; debugIt(); sub debugIt { use strict 'refs'; print('debugging it'); } -e syntax OK c:\@Work\Perl\monks>perl -wMstrict -MO=Deparse,-p -le "use constant DEBUG => 0; ;; DEBUG and debugIt(); ;; sub debugIt { print 'debugging it'; } " BEGIN { $^W = 1; } BEGIN { $/ = "\n"; $\ = "\n"; } use constant ('DEBUG', 0); use strict 'refs'; '???'; sub debugIt { use strict 'refs'; print('debugging it'); } -e syntax OK
Update:
if (DEBUG) { debugIt(); }
and
debugIt() if DEBUG;
would be other variations you might use. Of course, prefer
if (DEBUG) { more(); than(); one(); statement(); }
for, well, more than one statement.
Give a man a fish: <%-{-{-{-<
|
|---|