カラクリスタ

「輝かしい青春」なんて失かった人のブログ

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。