This is an excerpt from the latest version perlfaq7.pod, which
comes with the standard Perl distribution. These postings aim to
reduce the number of repeated questions as well as allow the community
to review and update the answers. The latest version of the complete
perlfaq is at
http://faq.perl.org .
--------------------------------------------------------------------
7.18: How can I access a dynamic variable while a similarly named lexical is in scope?
If you know your package, you can just mention it explicitly, as in
$Some_Pack::var. Note that the notation $::var is not the dynamic $var
in the current package, but rather the one in the "main" package, as
though you had written $main::var.
use vars '$var';
local $var = "global";
my $var = "lexical";
print "lexical is $var\n";
print "global is $main::var\n";
Alternatively you can use the compiler directive our() to bring a
dynamic variable into the current lexical scope.