Found in /usr/share/perl/5.34/pod/perlfaq4.pod How do I determine whether a scalar is a number/whole/integer/float? Assuming that you don't care about IEEE notations like "NaN" or "Infinity", you probably just want to use a regular expression (see also perlretut and perlre): use 5.010; if ( /\D/ ) { say "\thas nondigits"; } if ( /^\d+\z/ ) { say "\tis a whole number"; } if ( /^-?\d+\z/ ) { say "\tis an integer"; } if ( /^[+-]?\d+\z/ ) { say "\tis a +/- integer"; } if ( /^-?(?:\d+\.?|\.\d)\d*\z/ ) { say "\tis a real number"; } if ( /^[+-]?(?=\.?\d)\d*\.?\d*(?:e[+-]?\d+)?\z/i ) { say "\tis a C float" } There are also some commonly used modules for the task. Scalar::Util (distributed with 5.8) provides access to perl's internal function "looks_like_number" for determining whether a variable looks like a number. Data::Types exports functions that validate data types using both the above and other regular expressions. Thirdly, there is Regexp::Common which has regular expressions to match various types of numbers. Those three modules are available from the CPAN. If you're on a POSIX system, Perl supports the "POSIX::strtod" function for converting strings to doubles (and also "POSIX::strtol" for longs). Its semantics are somewhat cumbersome, so here's a "getnum" wrapper function for more convenient access. This function takes a string and returns the number it found, or "undef" for input that isn't a C float. The "is_numeric" function is a front end to "getnum" if you just want to say, "Is this a float?" sub getnum { use POSIX qw(strtod); my $str = shift; $str =~ s/^\s+//; $str =~ s/\s+$//; $! = 0; my($num, $unparsed) = strtod($str); if (($str eq '') || ($unparsed != 0) || $!) { return undef; } else { return $num; } } sub is_numeric { defined getnum($_[0]) } Or you could check out the String::Scanf module on the CPAN instead.
Generated by phpman v4.9.22-1-g1b0fcb4 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-07-05 06:21 @216.73.216.52
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)