Perlで配列の値をハッシュにしたいような時

表現が難しいんだけど

my @value = (1, 2, 3, 4, 5);

みたいなデータがあって、それをハッシュとして初期化したいときはどうするか。

my %hash = (
  key1 => $value[0],
  key2 => $value[1],
..
..
);

とかするのだろうけど、配列の個数が何個もあると面倒くさいなぁってなる。

例では5個だけど、10個も20個も項目があるとちょっと厳しい。

実はもっと簡単に

my %hash;
@hash{qw/key1 key2 key3 key4 key5/} = @value;

みたいな感じで書ける。ただし代入はできるけど、初期化でやろうとするとコンパイルエラーになる。

数年前に見かけて何じゃそりゃって思ったけど便利な書き方なのでメモしておく。でもこれ、数年後にコード読み返したら分からなくなりそうだな。