如何理解以下两行Perl代码:
%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};
Run Code Online (Sandbox Code Playgroud)
和
@{$self->{in1}->{sv1value}} = @{$cs->{out}->{forcast}};
Run Code Online (Sandbox Code Playgroud)
它们都涉及以链式方式使用散列和散列引用,除了第一个使用%而第二个是使用@的数组对象.这里产生的差异是什么,我不太清楚.
在第一个中$self->{in1}->{sv1},$cs->{out}->{grade}都是对哈希的引用.所以行:
%{$self->{in1}->{sv1}} = %{$cs->{out}->{grade}};
Run Code Online (Sandbox Code Playgroud)
正在用$self->{in1}->{sv1}引用的哈希的内容替换has refrenced 的内容$cs->{out}->{grade}.
注意:这与以下内容非常不同:
$self->{in1}->{sv1} = $cs->{out}->{grade}
Run Code Online (Sandbox Code Playgroud)
这只是让他们引用相同的哈希.
第二行是做同样的事情,除了它是引用的数组,而不是哈希.