如何理解以下两行Perl代码:
%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};
和
@{$self->{in1}->{sv1value}} = @{$cs->{out}->{forcast}};
它们都涉及以链式方式使用哈希和哈希引用,除了第一个使用%而第二个是使用@的数组对象。这里产生的差异是什么,我不太清楚。
答案 0 :(得分:5)
在第一个$self->{in1}->{sv1}
和$cs->{out}->{grade}
都是对哈希的引用。这一行:
%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};
将$self->{in1}->{sv1}
引用的内容替换为$cs->{out}->{grade}
引用的哈希内容。
注意:这与以下内容截然不同:
$self->{in1}->{sv1} = $cs->{out}->{grade}
这使得它们引用相同的哈希值。
第二行是做同样的事情,除了引用的数组,而不是哈希。
答案 1 :(得分:2)
你回答了自己的问题。第一行将哈希复制到哈希,第二行将数组复制到数组!换句话说,$self->{in1}->{sv1}
是对散列的引用,$self->{in1}->{sv1value}
是对数组的引用。