カラクリスタ

『輝かしい青春』なんて失かったヒトのブログ

Perlで二つの配列からハッシュをスマート作る方法

Perlな小ネタ。


Perlで二つの配列からハッシュを作る方法が分かったので、 忘れないようにするメモ。

二つの配列、例えば@keysにハッシュにしたいキー、 @valuesにハッシュにしたい値がそれぞれ入った配列があったとする。

この二つからひとつのハッシュを作るとして、最初に思いついたのが、 forループ使う方法。

my @keys   = qw(foo bar baz);
my @values = qw(hoge huge moge);
my %hash = ();
# forループを使う
for ( my $i = 0; $i < @keys; $i++ ) {
    $hash{$keys[$i]} = $values[$i];
}

これで一応目的は達成できるものの、スマートじゃない。 というかPerlなんだからもっとスマートにできるはず。

で、実際にハッシュスライスを使えばかなりスマートにできる事に気づいた。

以下が実際のコード。

my @keys   = qw(foo bar baz);
my @values = qw(hoge huge moge);
my %hash = ();
# ハッシュスライスを使う
@hash{@keys} = @values;

さすがはPerl。そこに痺れる憧れ(ry。

asin-4873115671-detail