Perl中的链式引用

时间:2011-12-19 03:53:46

标签: perl

如何理解以下两行Perl代码:

%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};

@{$self->{in1}->{sv1value}} = @{$cs->{out}->{forcast}};

它们都涉及以链式方式使用哈希和哈希引用,除了第一个使用%而第二个是使用@的数组对象。这里产生的差异是什么,我不太清楚。

2 个答案:

答案 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}是对数组的引用。