プロが教えるわが家の防犯対策術!

ふと疑問に思ったのですが通常、ハッシュを追加する方法は

my %hash = (
'キー1' => '値1',
'キー2' => '値2',
'キー3' => '値3',
);

$hash{'キー4'} = '値4';
$hash{'キー5'} = '値5';

とするか

my %hash = (
'キー1' => '値1',
'キー2' => '値2',
'キー3' => '値3',
);
%hash = (
%hash,
'キー4' => '値4',
'キー5' => '値5',
);

のようにするのが普通だと思いますがリストのpushみたいに追加する
方法はないのでしょうか。

A 回答 (1件)

例えば



push @a, (1, 2, 3);

のように、1度に複数のキーと値の組を追加したいでしょうか?

ハッシュのスライスを使えば以下のように出来ます。

my %hash = (
a => 1,
b => 2,
z => 26,
);

printf "%s %s\n", '-' x 7, 'before';
printf "%s => %s\n", $_, $hash{$_} for sort keys %hash;

@hash{"c", "d", "e"} = (3, 4, 5);# ハッシュのスライス

printf "%s %s\n", '-' x 7, 'after';
printf "%s => %s\n", $_, $hash{$_} for sort keys %hash;

頭に % ではなく @ が付く事に注意してください。

@hash{"c", "d", "e"}



($hash{"c"}, $hash{"d"}, $hash{"e"})

とほぼ同じ意味です。
    • good
    • 0
この回答へのお礼

あ~、なるほど。

そういえば、以前にこのようなことをしているスクリプトを見たことが
あるような気がします。
これってスライスっていう機能でこういう事ができるんですね。
Perlってまだまだ知らないことが多くて面白いです。

ありがとうございました。

お礼日時:2008/07/14 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!