MirOS Manual: strict(3p)


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

               use strict 'refs';
               $ref = \$foo;
               print $$ref;        # ok
               $ref = "foo";
               print $$ref;        # runtime error; normally ok
               $file = "STDOUT";
               print $file "Hi!";  # error; note: no comma after $file

           There is one exception to this rule:

               $bar = \&{'foo'};
               &$bar;

           is allowed so that "goto &$AUTOLOAD" would not break
           under stricture.

     "strict vars"
           This generates a compile-time error if you access a
           variable that wasn't declared via "our" or "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() vari-
           able isn't good enough.  See "my" in perlfunc and
           "local" in perlfunc.

perl v5.8.8                2005-02-05                           1

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

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

               package Cinna;
               our $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.

           Because of their special use by sort(), the variables
           $a and $b are exempted from this check.

     "strict subs"
           This disables the poetry optimization, generating a
           compile-time error if you try to use a bareword iden-
           tifier that's not a subroutine, unless it is a simple
           identifier (no colons) and that 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: quoted string is always ok
               $SIG{PIPE} = \&Plumber;     # preferred form

     See "Pragmatic Modules" in perlmodlib.

HISTORY

     "strict 'subs'", with Perl 5.6.1, erroneously permitted to
     use an unquoted compound identifier (e.g. "Foo::Bar") as a
     hash key (before "=>" or inside curlies), but without forc-
     ing it always to a literal string.

     Starting with Perl 5.8.1 strict is strict about its restric-
     tions: if unknown restrictions are used, the strict pragma
     will abort with

         Unknown 'strict' tag(s) '...'

perl v5.8.8                2005-02-05                           2

Generated on 2014-07-04 21:17:45 by $MirOS: src/scripts/roff2htm,v 1.79 2014/02/10 00:36:11 tg Exp $

These manual pages and other documentation are copyrighted by their respective writers; their source is available at our CVSweb, AnonCVS, and other mirrors. The rest is Copyright © 2002‒2014 The MirOS Project, Germany.
This product includes material provided by Thorsten Glaser.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report – diffs preferred.