Perlでの連鎖参照

次の2行のPerlコードを理解するには:

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

そして

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

Both of them involve using hashes そして hash reference in a chain manner, except the first one uses % そして the second one is an array object using @. What are the resulting differences here, about which I am not very clear.

0
質問のタイトルを更新することを検討してください。
追加された 著者 Maheep,

2 答え

In the first one $self->{in1}->{sv1} and $cs->{out}->{grade} are both references to hashes. So the line:

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

Is replacing the contents of the has refrenced by $self->{in1}->{sv1} with the contents of the hash referenced by $cs->{out}->{grade}.

注:これは次の点とは非常に異なります。

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

同じハッシュを参照するだけです。

2番目の行は、ハッシュではなく参照されている配列以外は同じことをしています。

5
追加された

You answered your own question. The first line copies a hash to a hash and the second line copies an array to an array!! In other words $self->{in1}->{sv1} is a reference to a hash and $self->{in1}->{sv1value} is a reference to an array.

2
追加された