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.

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
The  '???' deparser placeholder flags the non-compilation of an unreachable statement (update: or expression?).

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:  <%-{-{-{-<