11

ハッシュへの参照をプッシュしたい。つまり、与えられたハッシュの浅いコピーである新しいハッシュへの参照をプッシュしたいということです。

浅いコピーを作成するにはどうすればよいですか?

4

1 に答える 1

32

コピーするだけです:

 my %copy = %$hash;

別の参照が必要な場合は、匿名ハッシュコンストラクターで元の参照を展開するだけです。

 my $copy = { %$hash };

浅いコピーについて疑問に思っている人のために:この種の割り当ては、トップレベルのキーに新しい値を作成するだけです。参照である値はすべて、新しいハッシュでも同じ参照になります。つまり、元のハッシュを変更せずに、新しいハッシュの値を置き換えることができます。新しいアイテムを匿名配列の値にプッシュするなど、値を変更するだけの場合、両方のハッシュは同じ参照を共有するため、変更を取得します。そのため、通常、浅いコピーは必要なものではありません。

于 2010-01-09T00:00:44.063 に答える