Perl、変数値が数値かどうかを判断する方法は?

numbers perl perl-module regex
Perl、変数値が数値かどうかを判断する方法は?

変数値が数値であるかどうかを判断する独自の方法はありますか?

  10  4


ベストアンサー

コアモジュールの `Scalar

Util`は、` looks_like_number() `をエクスポートし、基礎となるPerl APIへのアクセスを提供します。

__
looks_like_number EXPR

perlが `EXPR`を数値と見なす場合にtrueを返します。
__

23


perlfaq4から:http://perldoc.perl.org/perlfaq4.html#How-do-I-determine-whether-a-scalar-is-a-number/whole/integer/float?[どうすればスカラーは数値/整数/整数/浮動小数点数]?

    if (/\D/)            { print "has nondigits\n" }
    if (/^\d+$/)         { print "is a whole number\n" }
    if (/^-?\d+$/)       { print "is an integer\n" }
    if (/^[+-]?\d+$/)    { print "is a +/- integer\n" }
    if (/^-?\d+\.?\d*$/) { print "is a real number\n" }
    if (/^-?(?:\d+(?:\.\d*)?|\.\d+)$/) { print "is a decimal number\n" }
    if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
            { print "a C float\n" }

また、タスクに一般的に使用されるモジュールもいくつかあります。

`Scalar

Util`(5.8で配布)は、変数が数字のように見えるかどうかを判断するためのperlの内部関数` looks_like_number`へのアクセスを提供します。

`Data

Types`は、上記と他の正規表現の両方を使用してデータ型を検証する関数をエクスポートします。

第三に、さまざまなタイプの数値に一致する正規表現を持つ `Regexp

Common`があります。

これら3つのモジュールはCPANから入手できます

16


String::Numericおよびhttp://search.cpan.org/dist/Regexp-Common/libもあります/Regexp/Common/number.pm[Regexp::Common::number]
. 便利に見えます。

String

Nummericにもhttp://search.cpan.org/dist/String-Numeric/lib/String/Numeric.pm#COMPARISON [“Scalar :: Util :: looks_like_number()”との比較」があります

9


_https://stackoverflow.com/questions/12647/how-do-i-tell-if-a-variable-has-a-numeric-value-in-perlの回答から適合[変数がPerlで数値を持っていますか?] _–

for my $testable ( qw( 1 5.25 0.001 1.3e8 foo bar 1dd 0 ) )
{
    printf("%10s %s a number\n",
           $testable,
           isa_number($testable) ? "is" : "isn't")
}

sub isa_number {
    use warnings FATAL => qw/numeric/;
    my $arg = shift;
    return unless defined $arg;
    eval { $arg + 0; 1 };
}

0


タイトルとURLをコピーしました