数値チェック

数値かどうかのチェックの処理で

$var = shift;
$var =~ /^(\d+)$/;
$var = $1;
die 'hogehoge' unless($var);

みたいに書いてしまったのですが、
$varに0が入っていた場合、unless($var)が成立してしまうので、

die 'hogehoge' unless(defined $var);

にしないといけない、のですよね…はまった。


条件式が偽になるケースは、
「数値の 0 、文字列の "0"、空きの文字列 ""、未定義値」だもの。
基本の基本ではないか…凹む。