数値かどうかのチェックの処理で
$var = shift; $var =~ /^(\d+)$/; $var = $1; die 'hogehoge' unless($var);
みたいに書いてしまったのですが、
$varに0が入っていた場合、unless($var)が成立してしまうので、
die 'hogehoge' unless(defined $var);
にしないといけない、のですよね…はまった。
条件式が偽になるケースは、
「数値の 0 、文字列の "0"、空きの文字列 ""、未定義値」だもの。
基本の基本ではないか…凹む。