perl 書きな日々

perl を使ったコードを書いている。perl は長年使ってるけど、もともとアレな処理系で日々進化もしているので、知らなかった書き方とか結構あったり、使い方は知っていても、深く理解してなかったりと面白い発見ががたまにあるので、そういうのをいくつか書いてみる。

構造体の直値

連想配列や、配列にポインタを入れれば構造体が作れる。でも、直値の書き方、というのを最近まで知らなかった。

my $hoge = { 'a'=>[1,2,3], 'b'=>4 };

などと、連想配列 {} や配列 [] で直値を記述できる。

map で連想配列を返す

連想名 (ハッシュのキー) の配列で、連想配列を初期化する、なんてコードを書くのに、

my %a;
map { $a{$_} = 1; } @keys;

なんてコードを書いていた。しかし、次のように書けばもっとスマートだ。

my %a = map { $_ => 1; } @keys;

これは連想配列の初期化で、配列を代入しているのを考えれば分かりやすい。連想配列に配列を入れる場合、キーと値を交互に渡せばいいだけだ。

Author: nobu

最近スクリプトキディな軟弱プログラマ 寒いの嫌い、暖かいところが好き