Jeff Pang wrote:
> hello,list,

Hello,

> See these commands pls:
> 
> [EMAIL PROTECTED] coremail]$ perl -le 'our %test = (type => "software"); 
> print $::{test}'                
> *main::test

You are printing the value for the key 'test' in the hash %:: (the symbol
table; see the "Symbol Tables" section of perlmod.)

> [EMAIL PROTECTED] coremail]$ perl -le 'our %test = (type => "software"); 
> print ${*main::test{HASH}}{type}'   
> software

*main::test{HASH} returns a hash reference to the 'test' symbol table entry
(see part 7 of the "Making References" section of perlref.)

> [EMAIL PROTECTED] coremail]$ perl -le 'our %test = (type => "software"); 
> print ${$::{test}{HASH}}{type}'          
> [ no output ]

You are trying to print $::{test}->{HASH}->{type} but $::{test} does not
contain a hash reference.

> The first command prove that  " $::{test} == *main::test ";
> The second command access the GLOB *main::test and get the value 'software' 
> in hash %test.
> 
> My question is:
> why I get nothing via accessing the $::{test} which is equl to *main::test in 
> the third command?Thanks.

%:: is the symbol table in the package 'main', *main::test is the type glob
'test' in the package 'main'.  You are dealing with two different variables.


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to