求助:伪散列的一个小疑问【未解决,继续讨论】

求助:伪散列的一个小疑问【未解决,继续讨论】



QUOTE:
$john = [ {age => 1, eyes => 2, weight => 3}, 47, "brown", 186 ];

print %$john->[0]{'weight'},"\n";        #1

print ${$john->[0]}{'weight'},"\n";     #2

print $john->[0]{'weight'},"\n";

Result:

QUOTE:
3
3
3

疑惑:
#1语句 为何能得到结果3,怪怪的,有这写法吗?
#2语句 "当大括号里面是一个标量变量时,你可以省略掉这个大括号",我一直这样理解的。
这里:print $$john->[0]{'weight'};不对,$john->[0]是hash引用,但同时,引用确实也是标量啊~估计我对“省略花括号”用法理解有误,正确的理解是什么呢?

以上2点请大家指教~~点滴误解将导致后续学习中大的祸患!先谢过~

你真的运行了吗?
再加一个$john->[0]->{'weight'} 呵呵~~


QUOTE:
原帖由 cobrawgl 于 2008-7-25 11:10 发表
你真的运行了吗?



QUOTE:
D:\>perl -w 123.txt
3
3
3

不信您试试?
Not a HASH reference at test.pl line 6.

这是我运行的结果 line 6 就是你那个 #1
呵呵 我这儿运行是可以的~
结果是
3
3
3
怪事啊,我的是 5.10 activeperl
print %{$john->[0]}->{'weight'},"\n";

改成这样就可以


QUOTE:
原帖由 cobrawgl 于 2008-7-25 11:38 发表
怪事啊,我的是 5.10 activeperl

呵呵,我是5.8.8
难道版本的兼容问题?
那书不是叫你们不用手动去创建伪散列,最好用那个模块,怎么就不听呢?