Cha*_*ens 10 string perl numbers
如果Perl 5中的字符串通过looks_like_number,它也可能是一个数字.例如,
my $s = "10" + 5;
Run Code Online (Sandbox Code Playgroud)
结果$s被分配15.
是否有任何情况下字符串的行为与其数字等价物不同?
hob*_*bbs 16
处理按位运算符时.123 ^ 456是435,但是"123" ^ "456"是"\x05\x07\x05".如果任一操作数是数字,则按位运算符以数字方式工作.
Cha*_*ens 11
我只能想到一个:检查真相时.字符串等同于0,但并非"0"如"0.0","0 but true","0e0",等全通looks_like_number和评价0的数值范围内,但仍然被认为是真正的价值.
FMc*_*FMc 10
等效数字和字符串在散列键中的行为有所不同 - 或者更常见的是,在我们对大字符串进行字符串化时:
my (%g, %h);
$g{ 1234000000000000 } = undef; # '1.234e+015' => undef
$h{'1234000000000000'} = undef; # '1234000000000000' => undef
Run Code Online (Sandbox Code Playgroud)
请注意,我们仍然在Perl可以精确存储数字的范围内:
> perl -e 'printf qq{%.f\n}, 1234000000000000 + $_ for +1, 0, -1'
1234000000000001
1234000000000000
1233999999999999
Run Code Online (Sandbox Code Playgroud)