Thursday, April 14, 2011

Perl: особенности looks_like_number

Для того, чтобы определить, является ли выражение валидным числом, в Perl, как правило, используется функция looks_like_number из модуля Scalar::Util.
looks_like_number EXPR
Returns true if perl thinks EXPR is a number. See looks_like_number in perlapi.


Полезно знать, что по мнению Perl числами являются такие строки:
"1."
".1"
"+1"
"01"
"1,1" (если включена соответствующая локаль)
"n1"
"1n"
"n1n"
"Inf"
"Infinity"
"NaN"
"0 but true"


Операции с этими "числами" не вызывают предупреждений компилятора:
perl -Mwarnings -E 'say "0 but true" + 1'
1
Для сравнения:
perl -Mwarnings -E 'say "0 but foo" + 1'
Argument "0 but foo" isn't numeric in addition (+) at -e line 1.
1

No comments:

Post a Comment