298 lines
5.1 KiB
Plaintext
298 lines
5.1 KiB
Plaintext
Check strict refs functionality
|
|
|
|
__END__
|
|
|
|
# no strict, should build & run ok.
|
|
my $fred ;
|
|
$b = "fred" ;
|
|
$a = $$b ;
|
|
$c = ${"def"} ;
|
|
$c = @{"def"} ;
|
|
$c = %{"def"} ;
|
|
$c = *{"def"} ;
|
|
$c = \&{"def"} ;
|
|
$c = def->[0];
|
|
$c = def->{xyz};
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict ;
|
|
my $fred ;
|
|
my $a = ${"fred"} ;
|
|
EXPECT
|
|
Can't use string ("fred") as a SCALAR ref while "strict refs" in use at - line 5.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $fred ;
|
|
my $a = ${"fred"} ;
|
|
EXPECT
|
|
Can't use string ("fred") as a SCALAR ref while "strict refs" in use at - line 5.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $fred ;
|
|
my $b = "fred" ;
|
|
my $a = $$b ;
|
|
EXPECT
|
|
Can't use string ("fred") as a SCALAR ref while "strict refs" in use at - line 6.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $b ;
|
|
my $a = $$b ;
|
|
EXPECT
|
|
Can't use an undefined value as a SCALAR reference at - line 5.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $b ;
|
|
my $a = @$b ;
|
|
EXPECT
|
|
Can't use an undefined value as an ARRAY reference at - line 5.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $b ;
|
|
my $a = %$b ;
|
|
EXPECT
|
|
Can't use an undefined value as a HASH reference at - line 5.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $b ;
|
|
my $a = *$b ;
|
|
EXPECT
|
|
Can't use an undefined value as a symbol reference at - line 5.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $a = fred->[0] ;
|
|
EXPECT
|
|
Can't use bareword ("fred") as an ARRAY ref while "strict refs" in use at - line 4.
|
|
########
|
|
|
|
# strict refs - error
|
|
use strict 'refs' ;
|
|
my $a = fred->{barney} ;
|
|
EXPECT
|
|
Can't use bareword ("fred") as a HASH ref while "strict refs" in use at - line 4.
|
|
########
|
|
|
|
# strict refs - no error
|
|
use strict ;
|
|
no strict 'refs' ;
|
|
my $fred ;
|
|
my $b = "fred" ;
|
|
my $a = $$b ;
|
|
use strict 'refs' ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# strict refs - no error
|
|
use strict qw(subs vars) ;
|
|
my $fred ;
|
|
my $b = "fred" ;
|
|
my $a = $$b ;
|
|
use strict 'refs' ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# strict refs - no error
|
|
my $fred ;
|
|
my $b = "fred" ;
|
|
my $a = $$b ;
|
|
use strict 'refs' ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# strict refs - no error
|
|
use strict 'refs' ;
|
|
my $fred ;
|
|
my $b = \$fred ;
|
|
my $a = $$b ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
# 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.
|
|
########
|
|
|
|
|
|
--FILE-- abc
|
|
my $a = ${"Fred"} ;
|
|
1;
|
|
--FILE--
|
|
use strict 'refs' ;
|
|
require "./abc";
|
|
EXPECT
|
|
|
|
########
|
|
|
|
--FILE-- abc
|
|
use strict 'refs' ;
|
|
1;
|
|
--FILE--
|
|
require "./abc";
|
|
my $a = ${"Fred"} ;
|
|
EXPECT
|
|
|
|
########
|
|
|
|
--FILE-- abc
|
|
use strict 'refs' ;
|
|
my $a = ${"Fred"} ;
|
|
1;
|
|
--FILE--
|
|
${"Fred"} ;
|
|
require "./abc";
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at ./abc line 2.
|
|
Compilation failed in require at - line 2.
|
|
########
|
|
|
|
--FILE-- abc.pm
|
|
use strict 'refs' ;
|
|
my $a = ${"Fred"} ;
|
|
1;
|
|
--FILE--
|
|
my $a = ${"Fred"} ;
|
|
use abc;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" 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 'refs' ;
|
|
my $a = ${"Fred"} ;
|
|
};
|
|
print STDERR $@ ;
|
|
my $a = ${"Fred"} ;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at - line 6.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'refs' ;
|
|
eval {
|
|
my $a = ${"Fred"} ;
|
|
};
|
|
print STDERR $@ ;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at - line 5.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'refs' ;
|
|
eval {
|
|
no strict ;
|
|
my $a = ${"Fred"} ;
|
|
};
|
|
print STDERR $@ ;
|
|
my $a = ${"Fred"} ;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at - line 9.
|
|
########
|
|
|
|
# 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 q[
|
|
use strict 'refs' ;
|
|
my $a = ${"Fred"} ;
|
|
]; print STDERR $@;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at (eval 1) line 3.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'refs' ;
|
|
eval '
|
|
my $a = ${"Fred"} ;
|
|
'; print STDERR $@ ;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at (eval 1) line 2.
|
|
########
|
|
|
|
# Check scope of pragma with eval
|
|
use strict 'refs' ;
|
|
eval '
|
|
no strict ;
|
|
my $a = ${"Fred"} ;
|
|
'; print STDERR $@;
|
|
my $a = ${"Fred"} ;
|
|
EXPECT
|
|
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at - line 8.
|