📄 vars
字号:
Check strict vars functionality__END__# no strict, should build & run ok.Fred ;my $fred ;$b = "fred" ;$a = $$b ;EXPECT########use strict qw(subs refs) ;$fred ;EXPECT########use strict ;no strict 'vars' ;$fred ;EXPECT######### strict vars - no erroruse strict 'vars' ;use vars qw( $freddy) ;BEGIN { *freddy = \$joe::shmoe; }$freddy = 2 ;EXPECT######### strict vars - no erroruse strict 'vars' ;use vars qw( $freddy) ;local $abc::joe ;my $fred ;my $b = \$fred ;$Fred::ABC = 1 ;$freddy = 2 ;EXPECT######### strict vars - erroruse strict ;$fred ;EXPECTGlobal symbol "$fred" requires explicit package name at - line 4.Execution of - aborted due to compilation errors.######### strict vars - erroruse strict 'vars' ;<$fred> ;EXPECTGlobal symbol "$fred" requires explicit package name at - line 4.Execution of - aborted due to compilation errors.######### strict vars - erroruse strict 'vars' ;local $fred ;EXPECTGlobal symbol "$fred" requires explicit package name at - line 4.Execution of - aborted due to compilation errors.######### Check compile time scope of strict vars pragmause strict 'vars' ;{ no strict ; $joe = 1 ;}$joe = 1 ;EXPECTVariable "$joe" is not imported at - line 8.Global symbol "$joe" requires explicit package name at - line 8.Execution of - aborted due to compilation errors.######### Check compile time scope of strict vars pragmano strict;{ use strict 'vars' ; $joe = 1 ;}$joe = 1 ;EXPECTGlobal symbol "$joe" requires explicit package name at - line 6.Execution of - aborted due to compilation errors.########--FILE-- abc$joe = 1 ;1;--FILE-- use strict 'vars' ;require "./abc";EXPECT########--FILE-- abcuse strict 'vars' ;1;--FILE-- require "./abc";$joe = 1 ;EXPECT########--FILE-- abcuse strict 'vars' ;$joe = 1 ;1;--FILE-- $joe = 1 ;require "./abc";EXPECTVariable "$joe" is not imported at ./abc line 2.Global symbol "$joe" requires explicit package name at ./abc line 2.Compilation failed in require at - line 2.########--FILE-- abc.pmuse strict 'vars' ;$joe = 1 ;1;--FILE-- $joe = 1 ;use abc;EXPECTVariable "$joe" is not imported at abc.pm line 2.Global symbol "$joe" requires explicit package name at abc.pm line 2.Compilation failed in require at - line 2.BEGIN failed--compilation aborted at - line 2.########--FILE-- abc.pmpackage Burp;use strict;$a = 1;$f = 1;$k = 1; # just to get beyond the limit...$b = 1;$g = 1;$l = 1;$c = 1;$h = 1;$m = 1;$d = 1;$i = 1;$n = 1;$e = 1;$j = 1;$o = 1;$p = 0b12;--FILE-- use abc;EXPECTGlobal symbol "$f" requires explicit package name at abc.pm line 3.Global symbol "$k" requires explicit package name at abc.pm line 3.Global symbol "$g" requires explicit package name at abc.pm line 4.Global symbol "$l" requires explicit package name at abc.pm line 4.Global symbol "$c" requires explicit package name at abc.pm line 5.Global symbol "$h" requires explicit package name at abc.pm line 5.Global symbol "$m" requires explicit package name at abc.pm line 5.Global symbol "$d" requires explicit package name at abc.pm line 6.Global symbol "$i" requires explicit package name at abc.pm line 6.Global symbol "$n" requires explicit package name at abc.pm line 6.Global symbol "$e" requires explicit package name at abc.pm line 7.Global symbol "$j" requires explicit package name at abc.pm line 7.Global symbol "$o" requires explicit package name at abc.pm line 7.Global symbol "$p" requires explicit package name at abc.pm line 8.Illegal binary digit '2' at abc.pm line 8, at end of lineabc.pm has too many errors.Compilation failed in require at - line 1.BEGIN failed--compilation aborted at - line 1.######### Check scope of pragma with evalno strict ;eval { $joe = 1 ;};print STDERR $@;$joe = 1 ;EXPECT######### Check scope of pragma with evalno strict ;eval { use strict 'vars' ; $joe = 1 ;};print STDERR $@;$joe = 1 ;EXPECTGlobal symbol "$joe" requires explicit package name at - line 6.Execution of - aborted due to compilation errors.######### Check scope of pragma with evaluse strict 'vars' ;eval { $joe = 1 ;};print STDERR $@;$joe = 1 ;EXPECTGlobal symbol "$joe" requires explicit package name at - line 5.Global symbol "$joe" requires explicit package name at - line 8.Execution of - aborted due to compilation errors.######### Check scope of pragma with evaluse strict 'vars' ;eval { no strict ; $joe = 1 ;};print STDERR $@;$joe = 1 ;EXPECTVariable "$joe" is not imported at - line 9.Global symbol "$joe" requires explicit package name at - line 9.Execution of - aborted due to compilation errors.######### Check scope of pragma with evalno strict ;eval ' $joe = 1 ;'; print STDERR $@ ;$joe = 1 ;EXPECT######### Check scope of pragma with evalno strict ;eval q[ use strict 'vars' ; $joe = 1 ;]; print STDERR $@;EXPECTGlobal symbol "$joe" requires explicit package name at (eval 1) line 3.######### Check scope of pragma with evaluse strict 'vars' ;eval ' $joe = 1 ;'; print STDERR $@ ;EXPECTGlobal symbol "$joe" requires explicit package name at (eval 1) line 2.######### Check scope of pragma with evaluse strict 'vars' ;eval ' no strict ; $joe = 1 ;'; print STDERR $@;$joe = 1 ;EXPECTGlobal symbol "$joe" requires explicit package name at - line 8.Execution of - aborted due to compilation errors.######### Check if multiple evals produce same errorsuse strict 'vars';my $ret = eval q{ print $x; };print $@;print "ok 1\n" unless defined $ret;$ret = eval q{ print $x; };print $@;print "ok 2\n" unless defined $ret;EXPECTGlobal symbol "$x" requires explicit package name at (eval 1) line 1.ok 1Global symbol "$x" requires explicit package name at (eval 2) line 1.ok 2######### strict vars with outer our - no erroruse strict 'vars' ;our $freddy;local $abc::joe ;my $fred ;my $b = \$fred ;$Fred::ABC = 1 ;$freddy = 2 ;EXPECT######### strict vars with inner our - no erroruse strict 'vars' ;sub foo { our $fred; $fred;}EXPECT######### strict vars with outer our, inner use - no erroruse strict 'vars' ;our $fred;sub foo { $fred;}EXPECT######### strict vars with nested our - no erroruse strict 'vars' ;our $fred;sub foo { our $fred; $fred;}$fred ;EXPECT######### strict vars with elapsed our - erroruse strict 'vars' ;sub foo { our $fred; $fred;}$fred ;EXPECTVariable "$fred" is not imported at - line 8.Global symbol "$fred" requires explicit package name at - line 8.Execution of - aborted due to compilation errors.######### nested our with local - no error$fred = 1;use strict 'vars';{ local our $fred = 2; print $fred,"\n";}print our $fred,"\n";EXPECT21######### "nailed" our declaration visibility across package boundariesuse strict 'vars';our $foo;$foo = 20;package Foo;print $foo, "\n";EXPECT20######### multiple our declarations in same scope, different packages, no warninguse strict 'vars';use warnings;our $foo;${foo} = 10;package Foo;our $foo = 20;print $foo, "\n";EXPECT20######### multiple our declarations in same scope, same package, warninguse strict 'vars';use warnings;our $foo;${foo} = 10;our $foo;EXPECT"our" variable $foo redeclared at - line 7.######### multiple our declarations in same scope, same package, warninguse strict 'vars';use warnings;{ our $x = 1 }{ our $x = 0 }our $foo;{ our $foo; our $foo; package Foo; our $foo;}EXPECT"our" variable $foo redeclared at - line 9. (Did you mean "local" instead of "our"?)"our" variable $foo redeclared at - line 10.########--FILE-- abcok--FILE-- # check if our variables are introduced correctly in readline()package Foo;use strict 'vars';our $FH;open $FH, "abc" or die "Can't open 'abc': $!";print <$FH>;close $FH;EXPECTok######### Make sure the strict vars failure still occurs# now that the `@i should be written as \@i' failure does not occur# 20000522 mjd@plover.com (MJD)use strict 'vars';no warnings;"@i_like_crackers";EXPECTGlobal symbol "@i_like_crackers" requires explicit package name at - line 7.Execution of - aborted due to compilation errors.######### [perl #21914] New bug > 5.8.0. Used to dump core.use strict 'vars';@k = <$k>;EXPECTGlobal symbol "@k" requires explicit package name at - line 4.Global symbol "$k" requires explicit package name at - line 4.Execution of - aborted due to compilation errors.######### [perl #26910] hints not propagated into (?{...})use strict 'vars';qr/(?{$foo++})/;EXPECTGlobal symbol "$foo" requires explicit package name at (re_eval 1) line 1.Compilation failed in regexp at - line 3.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -