私は 3 次元ハッシュと 2 次元ハッシュを持っており、2 次元ハッシュを 3 次元ハッシュの内部ハッシュの 1 つとマージしたいと考えています。これは、2 次元ハッシュのペアをマージするために行うことと似ています。 :
my %3dhash;
my %2dhash;
my $key = "some string";
%3dhash{$key} = ($3dhash{$key}, %2dhash);
しかし、私がそれを試みたとき、それはうまくいきませんでした。私は何をすべきですか?
私は 3 次元ハッシュと 2 次元ハッシュを持っており、2 次元ハッシュを 3 次元ハッシュの内部ハッシュの 1 つとマージしたいと考えています。これは、2 次元ハッシュのペアをマージするために行うことと似ています。 :
my %3dhash;
my %2dhash;
my $key = "some string";
%3dhash{$key} = ($3dhash{$key}, %2dhash);
しかし、私がそれを試みたとき、それはうまくいきませんでした。私は何をすべきですか?
次のことを試してください。
my %hash3d;
my %hash2d;
....
my $key = "some string";
$hash3d{$key} = { %{ $hash3d{$key} }, %hash2d };
Perl の変数は数字で始めることができないため、変数の名前を変更しました。%{ ... }
既存のハッシュを囲むと、リストとして展開されます。このリストは、 のリストで平坦化され%hash2d
ます。そのリストの{ ... }
周りには、匿名のハッシュ参照コンストラクターがあり、新しいハッシュ参照を作成し、それを次に格納します。$hash3d{$key}