http://www.perlmonks.org?node_id=1018142


in reply to Redefining Imported Subs: of scope and no

Don't mess with say, it will byte you or a later maintainer of this code.

Instead, (1) define sub debug {...}; with a plain old if inside. (2) Replace all occurences of say with debug(). (3) Replace those say's that aren't really for debugging back again. (4) Re-run your tests to see if anything got lost.

You can then consider moving debug() to a separate module for re-use, or switch to Log4perl altogether as other monk suggests here, or even write a debug_off() sub that replaces debug() on the fly. But at least it's not like "Hey, say() prints nothing! Our perl interpreter must be broken!"