use Scalar::Util 'looks_like_number'; my @candidates = qw/ 1 1.1 1,1 0E0 0e0 0377 100_000 0xdeadbeef/; print $_, looks_like_number($_)? ' is' : ' is not', ' a number.', $/ for @candidates; __END__ 1 is a number. 1.1 is a number. 1,1 is not a number. 0E0 is a number. 0e0 is a number. 0377 is a number. 100_000 is not a number. 0xdeadbeef not is a number.