my $var1=[{'a'=>'1','b'=>'2'},1];
print @$var1[0]->{a};
它将打印1
但是,如果我打印如下:
print @$var1->{a};
它会打印如下错误
Can't use an undefined value as a HASH reference;
任何人都可以解释两个print语句之间的差异吗?
答案 0 :(得分:4)
@$var1[0]->{a}
通常写成
$var1->[0]{a}
第二种语法不同。
@$var1->{a}
相当于
@{$var1}->{a};
您不能将数组(@{$var1}
)取消引用为哈希。另一个问题是为什么报告undef
,我不知道答案。
答案 1 :(得分:0)
在第一个声明中,您打印了键的值' a'数组中的第一个元素($ var1) 在第二个声明中,您打印了键的值' a'您的数组(并且因为数组没有键而得到错误)
希望这有帮助
答案 2 :(得分:0)
my $var1=[{'a'=>'1','b'=>'2'},1];
$ var1是数组引用,它包含索引0处的哈希引用和索引1处的标量
将$ var1引入数组,我们必须使用@ $ var1。(它给出了2元素数组) 为了访问单个元素,我们必须使用$$ var1 [0]或$ var1-> [0]。
$ var1-> [0]再次是哈希引用。 要取消它,我们必须使用$ var1-> [0] {'a'}。
但声明“@ $ var1-> {'a'}”无效,因为
有关详细信息,请参阅