参数不是数字 - 问题

时间:2011-03-09 12:40:15

标签: perl warnings number-formatting

为什么第一个示例不输出警告?

#!/usr/bin/env perl
use warnings;
use 5.012;

my $c = "9\n";
say $c * 2;

my $d = "6a";
say $d * 2;

# 18
# Argument "6a" isn't numeric in multiplication (*) at ./perl8.pl line 9.
# 12

2 个答案:

答案 0 :(得分:12)

从字符串转换数字时,将忽略尾随空格,并且换行计为空格,因此不会生成警告。转换“9”也不会产生警告。

答案 1 :(得分:1)

因为Perl认为这是一个数字:

use Scalar::Util 'looks_like_number';

for ("9\n", "6a") {
    say looks_like_number($_);
}

1
0