2011-03-09 15 views
2

爲什麼第一個示例不會輸出警告?參數不是數字 - 問題

#!/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 

回答

12

當從字符串轉換數字,尾隨空白將被忽略,換行符計爲空白,因此不產生警告。轉換「9」也不會產生警告。

1

由於Perl認爲它是一個數字:

use Scalar::Util 'looks_like_number'; 

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

1 
0