Почему первый пример не выводит предупреждение?
#!/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
Почему первый пример не выводит предупреждение?
#!/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
При преобразовании числа из строки конечные пробелы игнорируются, а новая строка считается пробелом, поэтому предупреждение не генерируется. Преобразование «9» также не генерирует предупреждение.
Потому что Perl думает, что это число:
use Scalar::Util 'looks_like_number';
for ("9\n", "6a") {
say looks_like_number($_);
}
1
0