if ($rHash->{"hoge"}) { if ($rHash->{"hoge"} == 0) { #処理 } elsif ($rHash->{"hoge"} == 1) { #処理 } elsif ($rHash->{"hoge"} == 2) { #処理 } }
$rHash->{"hoge"} にはちゃんと値が入っているのに0の時だけ処理が抜けてるのはなんでだろうと思っていたのですがPerlでは
・文字が入ってる、または、入ってない
・数字(文字)が0、または、0じゃない
で判断されてるみたいです。
ついでに調べてみるとtrueとfalseもないんですね。
http://d.hatena.ne.jp/perlcodesample/20080323/1206280262
http://www.perlplus.jp/perl/num/index5.html
既存コードは0の時も不思議なことにたまたま上手く動いてたみたいです。
definedつけて直しておきました。
if (defined($rHash->{"hoge"})) { if ($rHash->{"hoge"} == 0) { #処理 } elsif ($rHash->{"hoge"} == 1) { #処理 } elsif ($rHash->{"hoge"} == 2) { #処理 } }
この辺はもう慣れるしかないですね。
0 件のコメント:
コメントを投稿