ここで私が欲しいものを正確に説明する質問があります: perl で 2 つの深いハッシュをマージする方法
ただし、そこにある答えは私にはうまくいかないようです(Merge
モジュールの使用の提案)。
私は次のような2つのハッシュを持っています:
$VAR1 = {
'57494' => {
'name' => 'John Smith',
'age' => '9',
'height' => '120'
},
'57495' => {
'name' => 'Amy Pond',
'age' => '17',
'height' => '168'
}
}
};
$VAR1 = {
'57494' => {
'name_address' => 'Peter Smith',
'address' => '5 Cambridge Road',
'post_code' => 'CR5 0FS'
}
}
};
Hash::Merge
またはフォーマットを使用する場合、%c = {%a,%b}
毎回これを取得します:
$VAR1 = '57494';
$VAR2 = {
'name_address' => 'Peter Smith',
'address' => '5 Cambridge Road',
'post_code' => 'CR5 0FS'
};
(したがって、基本的に最初のデータを2番目のデータで上書きし、キーを台無しにしました)必要な場合:
$VAR1 = {
'57494' => {
'name' => 'John Smith',
'age' => '9',
'height' => '120'
'name_address' => 'Peter Smith',
'address' => '5 Cambridge Road',
'post_code' => 'CR5 0FS'
},
'57495' => {
'name' => 'Amy Pond',
'age' => '17',
'height' => '168'
}
}
};
したがって、キーが同じ場合はデータがマージされ、そうでない場合は新しいキーが最後に追加されます。これが理にかなっていることを願っています。間違った使い方をしたMerge
か、「手動で」ループに追加する必要があるかもしれませんが、とにかく、それについて考えるのに多くの時間を費やしています!
編集: Merge を使用して、何かばかげたことをしているかどうかを確認する方法:
私は持っている:
use Hash::Merge qw( merge );
...hash data above as %hash1 and %hash2...
my %combined_hash = %{ merge( %hash1,%hash2 ) };
print Dumper(%combined_hash);