月曜日, 12 月 21st, 2009 | Author: djodjo

Perlですが、リファレンスになってるハッシュのマージする方法。

my $hash1 = {
aaa=> 10,
bbb=> 100,
ccc=>1000,
};
my $hash2 = {
bbb=> 20,
};
my $merge= {
%{ $hash1 },
%{ $hash2 },
eee=>'add',
};
use Data::Dumper;
print Dumper $merge;

とすると、以下の感じでマージされる。ちゃんと後ろにくっつけた、hash2が同じキーbbbを上書きしてる。

$VAR1 = {
'bbb' => 20,
'aaa' => 10,
'ccc' => 1000,
'eee' => 'add'
};

ちなみに、ふつうのハッシュをマージ・結合するには

my %hash1 = (
aaa=> 10,
bbb=> 100,
ccc=> 1000,
);
my %hash2 = (
bbb=> 20,
);
my %merge= (%hash1, %hash2, eee=> 'add');
use Data::Dumper;
print Dumper \%merge;

で同じ結果に。
やっぱり一度、リファレンスから戻さないと結合できないみたい。
結局はリストの結合と同じね。

Category: 未分類
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply