use Scalar::Util 'looks_like_number'; if ($var !~ /^-?0/ && looks_like_number($var)) { # it's a number }