単純な文字列判定の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