ハッシュへの参照をプッシュしたい。つまり、与えられたハッシュの浅いコピーである新しいハッシュへの参照をプッシュしたいということです。
浅いコピーを作成するにはどうすればよいですか?
ハッシュへの参照をプッシュしたい。つまり、与えられたハッシュの浅いコピーである新しいハッシュへの参照をプッシュしたいということです。
浅いコピーを作成するにはどうすればよいですか?
コピーするだけです:
my %copy = %$hash;
別の参照が必要な場合は、匿名ハッシュコンストラクターで元の参照を展開するだけです。
my $copy = { %$hash };
浅いコピーについて疑問に思っている人のために:この種の割り当ては、トップレベルのキーに新しい値を作成するだけです。参照である値はすべて、新しいハッシュでも同じ参照になります。つまり、元のハッシュを変更せずに、新しいハッシュの値を置き換えることができます。新しいアイテムを匿名配列の値にプッシュするなど、値を変更するだけの場合、両方のハッシュは同じ参照を共有するため、変更を取得します。そのため、通常、浅いコピーは必要なものではありません。