SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG
DONATE


YUM REPOSITORY

 
 

MAN page from Fedora 28 perl-libs-5.26.3-418.fc28.x86_64.rpm

strict

Section: Perl Programmers Reference Guide (3pm)
Updated: 2018-03-01
Index 

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

The "strict" pragma disables certain Perl expressions that could behaveunexpectedly or are difficult to debug, turning them into errors. Theeffect of this pragma is limited to the current file or scope block.

If no import list is supplied, all possible restrictions are assumed.(This is the safest mode to operate in, but is sometimes too strict forcasual programming.) Currently, there are three possible things to bestrict 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 wasneither explicitly declared (using any of "my", "our", "state", or "usevars") nor fully qualified. (Because this is to avoid variable suicideproblems and subtle dynamic scoping issues, a merely "local" variable isn'tgood enough.) See ``my'' in perlfunc, ``our'' in perlfunc, ``state'' in perlfunc,``local'' in perlfunc, and vars.

    use strict 'vars';    $X::foo = 1;         # ok, fully qualified    my $foo = 10;        # ok, my() var    local $baz = 9;      # blows up, $baz not declared before    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 globalname without fully qualifying it.

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

strict subs
This disables the poetry optimization, generating a compile-time error ifyou try to use a bareword identifier that's not a subroutine, unless itis a simple identifier (no colons) and that it appears in curly braces oron the left hand side of the "=>" symbol.

    use strict 'subs';    $SIG{PIPE} = Plumber;   # blows up    $SIG{PIPE} = "Plumber"; # 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 unquotedcompound identifier (e.g. "Foo::Bar") as a hash key (before "=>" orinside curlies), but without forcing it always to a literal string.

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

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

As of version 1.04 (Perl 5.10), strict verifies that it is used as``strict'' to avoid the dreaded Strict trap on case insensitive filesystems.


 

Index

NAME
SYNOPSIS
DESCRIPTION
HISTORY

This document was created byman2html,using the manual pages.