Perl Numeric Literal
プログラミングPerl
$x = 12345; # 整数 $x = 12345.67; # 浮動小数点数 $x = 6.0e23; # 科学的記法 $x = 4_294_967_296; # 下線をつかって読みやすくする $x = 0377; # 8進数 $x = 0xfff; # 16進数 $x = 0b1100_0000; # 2進数
Perlで文字列が数値かどうか判定するには
1. 最良の方法?
!( $n == 0 && $n ne "0" )
warningが出る...Argument "String" isn't numeric in numeric eq (==)
2. looks_like_number()
Scalar::Util::looks_like_number()
正規表現にしてみた
my $rx_integer = qr/(?:[0-9_]+)/; my $rx_decimal = qr/(?:[0-9_]+\.[0-9_]+)/; my $rx_number = qr{ (?: (?:-)* inf (?:inity)* ) | nan | 0(?: (?:x[0-9a-f_]+) | (?:b[0-9_]+) | (?:[0-7_]+) ) | (?: $rx_decimal|$rx_integer) e[+|-]? $rx_integer ) | $rx_decimal | $rx_integer }xi;
参考:
perldata - Perl のデータ型 - perldoc.jp
looks_like_number() - Perl日記