http://qs321.pair.com?node_id=491294


in reply to turn off strict for production code

Others have suggested using the if pragma. If you prefer to avoid installing anything new, try:

eval 'use strict' if ($condition);

Update: As halley points out, this won't work for pragmas, such as strict, only for modules.

Replies are listed 'Best First'.
Re^2: turn off strict for production code
by halley (Prior) on Sep 12, 2005 at 16:10 UTC
    Except that doesn't actually work. It turns on the strict rules for the rest of the string you're evaluating, but that's it.
    % perl use strict; $x = 1; print $x,$/; ^D Global symbol "$x" requires explicit package name at - line 2. Global symbol "$x" requires explicit package name at - line 3. Execution of - aborted due to compilation errors. % perl eval 'use strict' if 1; $x = 1; print $x,$/; ^D 1
    By convention, the all-lowercase modules like strict, warnings, if, and utf8 are pragma declarations. They change the rules of Perl as a language. You should expect that they work through magic, and they produce results which are magical. Typically, they are not just "build up a symbol table and call import()" like all the other modules.

    --
    [ e d @ h a l l e y . c c ]