strict(3)

strict - Perl pragma to restrict unsafe constructs

Showing IRIX 6.5.30 (default release). Last changed in IRIX 6.5.19.

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.
     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.