224 lines
3.8 KiB
Plaintext
224 lines
3.8 KiB
Plaintext
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 error
|
|
use strict 'vars' ;
|
|
use vars qw( $freddy) ;
|
|
local $abc::joe ;
|
|
my $fred ;
|
|
my $b = \$fred ;
|
|
$Fred::ABC = 1 ;
|
|
$freddy = 2 ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# strict vars - error
|
|
use strict ;
|
|
$fred ;
|
|
EXPECT
|
|
Global symbol "$fred" requires explicit package name at - line 4.
|
|
Execution of - aborted due to compilation errors.
|
|
########
|
|
|
|
# strict vars - error
|
|
use strict 'vars' ;
|
|
$fred ;
|
|
EXPECT
|
|
Global symbol "$fred" requires explicit package name at - line 4.
|
|
Execution of - aborted due to compilation errors.
|
|
########
|
|
|
|
# strict vars - error
|
|
use strict 'vars' ;
|
|
local $fred ;
|
|
EXPECT
|
|
Global symbol "$fred" requires explicit package name at - line 4.
|
|
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.
|
|
########
|
|
|
|
--FILE-- abc
|
|
$joe = 1 ;
|
|
1;
|
|
--FILE--
|
|
use strict 'vars' ;
|
|
require "./abc";
|
|
EXPECT
|
|
|
|
########
|
|
|
|
--FILE-- abc
|
|
use strict 'vars' ;
|
|
1;
|
|
--FILE--
|
|
require "./abc";
|
|
$joe = 1 ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
--FILE-- abc
|
|
use strict 'vars' ;
|
|
$joe = 1 ;
|
|
1;
|
|
--FILE--
|
|
$joe = 1 ;
|
|
require "./abc";
|
|
EXPECT
|
|
Variable "$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.pm
|
|
use strict 'vars' ;
|
|
$joe = 1 ;
|
|
1;
|
|
--FILE--
|
|
$joe = 1 ;
|
|
use abc;
|
|
EXPECT
|
|
Variable "$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.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
no strict ;
|
|
eval {
|
|
$joe = 1 ;
|
|
};
|
|
print STDERR $@;
|
|
$joe = 1 ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
no strict ;
|
|
eval {
|
|
use strict 'vars' ;
|
|
$joe = 1 ;
|
|
};
|
|
print STDERR $@;
|
|
$joe = 1 ;
|
|
EXPECT
|
|
Global symbol "$joe" requires explicit package name at - line 6.
|
|
Execution of - aborted due to compilation errors.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'vars' ;
|
|
eval {
|
|
$joe = 1 ;
|
|
};
|
|
print STDERR $@;
|
|
$joe = 1 ;
|
|
EXPECT
|
|
Global symbol "$joe" requires explicit package name at - line 5.
|
|
Execution of - aborted due to compilation errors.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'vars' ;
|
|
eval {
|
|
no strict ;
|
|
$joe = 1 ;
|
|
};
|
|
print STDERR $@;
|
|
$joe = 1 ;
|
|
EXPECT
|
|
Variable "$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 eval
|
|
no strict ;
|
|
eval '
|
|
$joe = 1 ;
|
|
'; print STDERR $@ ;
|
|
$joe = 1 ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
no strict ;
|
|
eval q[
|
|
use strict 'vars' ;
|
|
$joe = 1 ;
|
|
]; print STDERR $@;
|
|
EXPECT
|
|
Global symbol "$joe" requires explicit package name at (eval 1) line 3.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'vars' ;
|
|
eval '
|
|
$joe = 1 ;
|
|
'; print STDERR $@ ;
|
|
EXPECT
|
|
Global symbol "$joe" requires explicit package name at (eval 1) line 2.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'vars' ;
|
|
eval '
|
|
no strict ;
|
|
$joe = 1 ;
|
|
'; print STDERR $@;
|
|
$joe = 1 ;
|
|
EXPECT
|
|
Global symbol "$joe" requires explicit package name at - line 8.
|
|
Execution of - aborted due to compilation errors.
|