in reply to Re^3: How to check Inputs if Numeric
in thread How to check Inputs if Numeric

Not bad, especially given the simplicity. More potential false negatives to go with jdporter's.

for my $input (qw< +4 1.0 1e5 12345678901234567890 1.234567890123456789 >) { if( $input+0 eq $input ) { print "$input is a number!\n"; } else { print "$input is not ", 0+$input, "\n"; } } __END__ +4 is not 4 1.0 is not 1 1e5 is not 100000 12345678901234567890 is not 1.23456789012346e+019 1.234567890123456789 is not 1.23456789012346

Update: It successfully detects if $input is (primarily) holding a numeric value (an IV or NV, how Perl stores an integer and floating point, respectively) or is holding a string value that equals the canonical string representation of any possible Perl numeric value.

So I don't believe that there are any false positives. The false negatives are the many ways to reasonably represent a numeric value that aren't Perl's canonical representation.

- tye