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 ]