perldoc > SCALAR(0xdecaf)

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)
Valid XHTML 1.0 Transitional!Valid CSS!