


strict(3p)       Perl Programmers Reference Guide      strict(3p)


NAME
       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 declared via use vars,
             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

                 package Cinna;
                 use vars qw/ $bar /;        # Declares $bar in current package
                 $bar = 'HgS';               # ok, global declared via pragma

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



29/Apr/1999            perl 5.005, patch 03                     1





strict(3p)       Perl Programmers Reference Guide      strict(3p)


       strict subs
             This disables the poetry optimization, generating a
             compile-time error if you try to use a bareword
             identifier that's not a subroutine, unless it
             appears in curly braces or on the left hand side of
             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 perlmodlib
       manpage.










































29/Apr/1999            perl 5.005, patch 03                     2


