新手,请教这两句代码的差别,谢谢

新手,请教这两句代码的差别,谢谢

代码:

$data{"a"}={1,"aaa",2,"bbb"};
$tmp=$data{"a"};

print $data{"a"}{1};     #输出aaa
print $tmp{1};            #输出空

请问$tmp{1}为什么不输出aaa呢?
看精华区,Perl 引用教程。


$data{a}{1} 之所以可以取到,是因为它是 $data{a}->{1} 的缩写。
$tmp{1} 不是 $tmp->{1} 的缩写。你用 $tmp->{1} 就可以取到。
这么快,多谢了
$tmp 和$tmp{"key"}或$tmp[1]完全是没有联系的,第一个是独立的标量变量,第二个和第三个是散列和数据的单独元素的访问