単純な文字列判定のif-elseの変数代入をハッシュで

back
$mon に入っている月名を、数字に変換したい。

$mon = {"jan"=>1, "feb"=>2, "mar"=>3, "apr"=>4,
        "may"=>5, "jun"=>6, "jul"=>7, "aug"=>8,
        "sep"=>9, "oct"=>10, "nov"=>11, "dec"=>12}->{lc $mon};

無名ハッシュのリファレンスを使って、そのキーに月名を、
対応する値に月の数字をセットし、月名でアクセスしてみる。
大文字小文字を区別しなくするため、とりあえず lc しておく。

ただし、条件分岐が増えれば増えるほど、また、if-else の場合に
その条件が始めの方にあればあるほど、if-else の方が高速 :-p

ま、こういう使い方もあるよ、ってことで。

キーを予め設定しておき、変数に格納しておく場合は、
リファレンスでなくても OK

%mon_name = ("jan"=>1, "feb"=>2, "mar"=>3, "apr"=>4,
             "may"=>5, "jun"=>6, "jul"=>7, "aug"=>8,
             "sep"=>9, "oct"=>10, "nov"=>11, "dec"=>12);

$mon = $mon_name{$mon};

back