Perl中的链式引用
如何理解以下两行Perl代码:Perl中的链式引用,perl,Perl,如何理解以下两行Perl代码: %{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}}; 及 这两种方法都涉及以链式方式使用哈希和哈希引用,但第一种方法使用%,第二种方法是使用@的数组对象。由此产生的差异是什么,对此我不是很清楚。您回答了自己的问题。第一行将散列复制到散列,第二行将数组复制到数组!!换句话说,$self->{in1}->{sv1}是对哈希的引用,$self->{in1}->{sv1value}是对数组的引用。在第一
%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};
及
这两种方法都涉及以链式方式使用哈希和哈希引用,但第一种方法使用%,第二种方法是使用@的数组对象。由此产生的差异是什么,对此我不是很清楚。您回答了自己的问题。第一行将散列复制到散列,第二行将数组复制到数组!!换句话说,
$self->{in1}->{sv1}
是对哈希的引用,$self->{in1}->{sv1value}
是对数组的引用。在第一个$self->{in1}->{sv1}
和$cs->{out}->{grade}
中都是对哈希的引用。所以这句话:
%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};
正在用$cs->{out}->{grade}
引用的哈希的内容替换已被$self->{in1}->{sv1}
引用的内容
注意:这与以下情况非常不同:
$self->{in1}->{sv1} = $cs->{out}->{grade}
这只会使它们引用相同的散列
第二行是做同样的事情,除了它是引用的数组,而不是哈希。
请考虑更新问题标题。$self->{in1}->{sv1} = $cs->{out}->{grade}