为什么 Perl(5.30.3 以及no feature ':all')假定连接运算符后面的裸字.是字符串?例如:
use v5.30; # or: no feature ':all';
use strict;
use warnings;
my $k1 = 'a';
my $k2 = 'b';
print STDOUT $k1 . k2 . "\n";
Run Code Online (Sandbox Code Playgroud)
打印出来ak2(ab是有意的),并且不会引发此处不允许使用裸字的例外情况。这是我的脚本中的一个错误,但不一定是 Perl 中的错误。
根据perlglossary,裸词是指“根据 ,其含义足够模糊,被视为非法的词use strict 'subs'”。然而,由于$k2之前定义了一个名为 name 的标量k2,所以我认为k2它已经足够模糊了。
奇怪的是,第二个裸字引发了异常:
use v5.30; # or: no feature ':all';
use strict;
use warnings;
my $k1 = 'a';
my $k2 = 'b';
my $k3 = 'c';
print STDOUT $k1 . k2 . k3 . "\n";
Run Code Online (Sandbox Code Playgroud)
和:
use v5.30; # or: no feature ':all';
use strict;
use warnings;
my $k1 = 'a';
my $k2 = 'b';
print STDOUT $k1 . k2 . "\n";
Run Code Online (Sandbox Code Playgroud)
k3是不允许的,但是却k2是。为什么?