in reply to Is A Number

I agree with the other monks that the module is the best solution if you want to know if perl considers your string a number. But I will try to answer your original question. It is actually better to only test for the valid cases, and assume that it is invalid otherwise. The following code is a simplified version of yours.
use strict; use warnings; use Test::Simple tests => 10; sub IsNumber { (local $_) = @_; return (m/^[+-]?\d+$/ or m/^[+-]?[0-9]+[.]?[0-9]+$/) ; } ok( !IsNumber("0777 891 777")); ok( IsNumber("1.5671") ); ok( !IsNumber("121A3D") ); ok( IsNumber("777") ); ok( IsNumber("0") ); ok( IsNumber("-4.567") ); ok( !IsNumber("+9.8.97") ); ok( IsNumber("+9.897") ); ok( !IsNumber("+9.8¬97") ); ok( !IsNumber("9.8[97") );

OUTPUT:

1..10 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10
Bill