[未引用的单词在Perl中似乎有很多含义。
print STDERR $msg;
$hash{key}
func( param => $arg )
my $x = str;
如何确定这些含义?
解析标识符(按优先级降序):
在语法上预期的含义,在语法上。
sub foo { } # «foo» («sub» is covered later)
$foo
//i
字符串文字,后接=>
或整个哈希索引表达式。
my %h = ( a => 1 );
$h{a}
关键字。
while (1) { }
sub { }
对先前导入的子程序的子调用。
use Time::HiRes qw( time );
time
调用命名列表运算符,命名一元运算符或命名空运算符。
print $x, $y, $z;
$c = chr $i;
$t = time;
对先前声明的子项的子调用。
sub foo { }
foo
sub bar;
bar
use constant FOO => 123;
FOO
Glob,用作期望文件句柄的运算符的操作数。
open(FH, '>', $qfn) or die $!;
print FH "Hello, World!\n";
String文字,当用作带有*
原型的sub参数的参数时。
sub myprint(*@);
myprint(FH, "Hello, World\n");
最后,它被视为字符串文字。这些被称为“流行词”,use strict qw( subs );
不允许使用。
希望我没有错过。
当前丢失:
Class
和Class->method
中的[method Class
。funcname
中的[sort funcname
。-foo
${foo}
感谢@mosvy和@Grinnz!两者都发现了我错过的一些案例。