Check strict subs functionality __END__ # no strict, should build & run ok. Fred ; my $fred ; $b = "fred" ; $a = $$b ; EXPECT ######## use strict qw(refs vars); Fred ; EXPECT ######## use strict ; no strict 'subs' ; Fred ; EXPECT ######## # strict subs - error use strict 'subs' ; Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 4. Execution of - aborted due to compilation errors. ######## # strict subs - error use strict ; Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 4. Execution of - aborted due to compilation errors. ######## # strict subs - no error use strict 'subs' ; sub Fred {} Fred ; EXPECT ######## # Check compile time scope of strict subs pragma use strict 'subs' ; { no strict ; my $a = Fred ; } my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 8. Execution of - aborted due to compilation errors. ######## # Check compile time scope of strict subs pragma no strict; { use strict 'subs' ; my $a = Fred ; } my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 6. Execution of - aborted due to compilation errors. ######## # Check compile time scope of strict vars pragma use strict 'vars' ; { no strict ; $joe = 1 ; } $joe = 1 ; EXPECT Variable "$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 pragma no strict; { use strict 'vars' ; $joe = 1 ; } $joe = 1 ; EXPECT Global symbol "$joe" requires explicit package name at - line 6. Execution of - aborted due to compilation errors. ######## # Check runtime scope of strict refs pragma use strict 'refs'; my $fred ; my $b = "fred" ; { no strict ; my $a = $$b ; } my $a = $$b ; EXPECT Can't use string ("fred") as a SCALAR ref while "strict refs" in use at - line 10. ######## # Check runtime scope of strict refs pragma no strict ; my $fred ; my $b = "fred" ; { use strict 'refs' ; my $a = $$b ; } my $a = $$b ; EXPECT Can't use string ("fred") as a SCALAR ref while "strict refs" in use at - line 8. ######## # Check runtime scope of strict refs pragma no strict ; my $fred ; my $b = "fred" ; { use strict 'refs' ; $a = sub { my $c = $$b ; } } &$a ; EXPECT Can't use string ("fred") as a SCALAR ref while "strict refs" in use at - line 8. ######## use strict 'subs' ; my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 3. Execution of - aborted due to compilation errors. ######## --FILE-- abc my $a = Fred ; 1; --FILE-- use strict 'subs' ; require "./abc"; EXPECT ######## --FILE-- abc use strict 'subs' ; 1; --FILE-- require "./abc"; my $a = Fred ; EXPECT ######## --FILE-- abc use strict 'subs' ; my $a = Fred ; 1; --FILE-- Fred ; require "./abc"; EXPECT Bareword "Fred" not allowed while "strict subs" in use at ./abc line 2. Compilation failed in require at - line 2. ######## --FILE-- abc.pm use strict 'subs' ; my $a = Fred ; 1; --FILE-- Fred ; use abc; EXPECT Bareword "Fred" not allowed while "strict subs" in use at abc.pm line 2. Compilation failed in require at - line 2. BEGIN failed--compilation aborted at - line 2. ######## # Check scope of pragma with eval no strict ; eval { my $a = Fred ; }; print STDERR $@; my $a = Fred ; EXPECT ######## # Check scope of pragma with eval no strict ; eval { use strict 'subs' ; my $a = Fred ; }; print STDERR $@; my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 6. Execution of - aborted due to compilation errors. ######## # Check scope of pragma with eval use strict 'subs' ; eval { my $a = Fred ; }; print STDERR $@; my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 5. Bareword "Fred" not allowed while "strict subs" in use at - line 8. Execution of - aborted due to compilation errors. ######## # Check scope of pragma with eval use strict 'subs' ; eval { no strict ; my $a = Fred ; }; print STDERR $@; my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 9. Execution of - aborted due to compilation errors. ######## # Check scope of pragma with eval no strict ; eval ' Fred ; '; print STDERR $@ ; Fred ; EXPECT ######## # Check scope of pragma with eval no strict ; eval q[ use strict 'subs' ; Fred ; ]; print STDERR $@; EXPECT Bareword "Fred" not allowed while "strict subs" in use at (eval 1) line 3. ######## # Check scope of pragma with eval use strict 'subs' ; eval ' Fred ; '; print STDERR $@ ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at (eval 1) line 2. ######## # Check scope of pragma with eval use strict 'subs' ; eval ' no strict ; my $a = Fred ; '; print STDERR $@; my $a = Fred ; EXPECT Bareword "Fred" not allowed while "strict subs" in use at - line 8. Execution of - aborted due to compilation errors.