質問: value="0" if ($in{'pre'} eq '0') { &error("都道府県の選択!!"); } if ($in{'pre'} eq "") { &error("都道府県の選択!!"); } これを1行にするにはどうしたらいいのでしょう? ↓↓はダメでした(≧m≦) if ($in{'pre'} eq "" || '0') { &error("都道府県を選択!!"); }
回答: unless は if の逆で「与えられた条件が成り立たないときにブロックを実行する」という文です. 今条件として $in{pre} とだけ書いてありますが, これだと「空文字列か (数値の) 0, あるいは (文字列の) "0" のときに偽, その他のときに真」となります. つまり, unless ($in{pre}) と書くと結果的に 「$in{pre} が空文字列か数値の 0, もしくは文字列の "0" のときに以下のブロックを実行する」という意味になります.