vars.t revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!./perl
BEGIN {
chdir 't' if -d 't';
}
$| = 1;
print "1..27\n";
# catch "used once" warnings
my @warns;
%x = ();
$y = 3;
@z = ();
$X::x = 13;
print "${e}ok 1\n";
print "${e}ok 2\n";
print "${e}ok 3\n";
print "${e}ok 4\n";
print "${e}ok 5\n";
# this is inside eval() to avoid creation of symbol table entries and
# to avoid "used once" warnings
eval <<'EOE';
print "${e}ok 6\n";
print "${e}ok 7\n";
print "${e}ok 8\n";
print "${e}ok 9\n";
print "${e}ok 10\n";
print "${e}ok 11\n";
$e = ! $X::{p} && 'not ';
print "${e}ok 12\n";
$e = $@ && 'not ';
print "${e}ok 13\n";
print "${e}ok 14\n";
print "${e}ok 15\n";
eval 'use vars qw($x[3])';
print "${e}ok 16\n";
{ local $^W;
print "${e}ok 17\n";
};
# NB the next test only works because vars.pm has already been loaded
$e = ($@ || (shift(@warns)||'') !~ /^No need to declare built-in vars/)
print "${e}ok 18\n";
print "${e}ok 19\n";
print "${e}ok 20\n";
eval '$u = 3; @v = (); %w = ()';
print "${e}ok 21\n";
print "${e}ok 22\n";
print "${e}ok 23\n";
eval '$u = 3; @v = (); %w = ()';
my @errs = split /\n/, $@;
print "${e}ok 24\n";
$e = !(grep(/^Global symbol "\$u" requires explicit package name/, @errs))
print "${e}ok 25\n";
$e = !(grep(/^Global symbol "\@v" requires explicit package name/, @errs))
print "${e}ok 26\n";
$e = !(grep(/^Global symbol "\%w" requires explicit package name/, @errs))
print "${e}ok 27\n";