#!perl -l
package Pkg;
{
use vars qw/ $var /;
$var = 7;
print $var; # 7
}
print $var; # 7
package main;
print $var; # undef; $main::var has not been set
# error with strict
print $Pkg::var; # 7
####
#!perl -l
package Pkg;
{
my $var = 7;
print $var; # 7
}
print $var; # undef; $Pkg::var has not been set
# error with strict
package main;
print $var; # undef; $main::var has not been set
# error with strict
print $Pkg::var; # undef; $Pkg::var has not been set
##
##
#!perl -l
package Pkg;
{
our $var = 7;
print $var; # 7
}
print $var; # 7
# error with strict
package main;
print $var; # undef; $main::var has not been set
# error with strict
print $Pkg::var; # 7
##
##
#!perl -l
package Pkg;
our $var = 7;
print $var; # 7
package main;
print $var; # 7; even though we switched packages,
# $var still refers to $Pkg::var
# in this lexical scope
print $Pkg::var; # 7