strict(3)

strict(3)

strftime Home Page Subroutines Index StrictMotif


NNAAMMEE
       strict - Perl pragma to restrict unsafe constructs

SSYYNNOOPPSSIISS
           use strict;

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

           use strict;
           no strict "vars";

DDEESSCCRRIIPPTTIIOONN
       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
             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 perlmod
       manpage.

strftime Home Page Subroutines Index StrictMotif