strict - Perl pragma to restrict unsafe constructs


SYNOPSIS

           use strict;

           use strict "vars";
           use strict "refs";
           use strict "subs";

           use strict;
           no strict "vars";



DESCRIPTION

       If no import list is supplied, all possible restrictions
       are assumed.  (This is the safest mode to operate in, but
       is sometimes too strict for casual programming.)
       Currently, there are three possible things to be strict
       about:  "subs", "vars", and "refs".

       strict refs
             This generates a runtime error if you use symbolic
             references (see the perlref manpage).

                 use strict 'refs';
                 $ref = \$foo;
                 print $$ref;        # ok
                 $ref = "foo";
                 print $$ref;        # runtime error; normally ok


       strict vars
             This generates a compile-time error if you access a
             variable that wasn't localized via my() or wasn't
             fully qualified.  Because this is to avoid variable
             suicide problems and subtle dynamic scoping issues,
             a merely local() variable isn't good enough.  See
             the my entry in the perlfunc manpage and the local
             entry in the perlfunc manpage.

                 use strict 'vars';
                 $X::foo = 1;         # ok, fully qualified
                 my $foo = 10;        # ok, my() var
                 local $foo = 9;      # blows up

             The local() generated a compile-time error because
             you just touched a global name without fully
             qualifying it.

       strict subs
             This disables the poetry optimization, generating a
             compile-time error if you try to use a bareword
             the "=>" symbol.

                 use strict 'subs';
                 $SIG{PIPE} = Plumber;       # blows up
                 $SIG{PIPE} = "Plumber";     # just fine: bareword in curlies always ok
                 $SIG{PIPE} = \&Plumber;     # preferred form


       See the section on Pragmatic Modules in the perlmod
       manpage.