in reply to check if its a number

I was going to post something else, but in the process I tried this:
my $foo = 'name'; print $foo + 1;
Perl warns me "Argument "name" isn't numeric in addition (+)" How does Perl know it isn't a number? Is the method available through a function?

Replies are listed 'Best First'.
Re^2: check if its a number
by nobull (Friar) on Apr 12, 2008 at 14:23 UTC
    Yes you can write a function that tells you if a given string triggers the warning.

    sub perl_thinks_it_is_number { eval { use warnings FATAL => 'numeric'; no warnings 'void'; 0+shift; 1; } } print "'foo' isn't a number\n" unless perl_thinks_it_is_number 'foo'; print "'17' is a number\n" if perl_thinks_it_is_number '17';
    Note that this will consider '00' and some other oddities to be a number. You are probably better sticking with other answers elsewhere in this thread.
Re^2: check if its a number
by parv (Parson) on Apr 12, 2008 at 09:31 UTC
    ... warning comes up only when using, well, warnings pragma (otherwise string is used as a zero).