in reply to Re^2: Variable access across packages?
in thread Variable access across packages?
Yes and no. Yes, $main:: is special. It refers to the package that the "main" script is running in (see perlmod as moritz suggested). However, it is not necessarily the package that called the code that refers to it. For that, look at caller.
$x = 'main'; Foo::talk(); package Bar; $x = 'Bar'; Foo::talk(); package Foo; sub talk { my ( $package, $filename, $line ) = caller; print "Calling package is '$package'\n"; printf "Caller's \$x is: '%s'\n", ${ $package . '::x' }; } __END__ Calling package is 'main' Caller's $x is: 'main' Calling package is 'Bar' Caller's $x is: 'Bar'
|
|---|