破折号(或减号或减号)后跟字母(或函数名)导致 Perl 语法错误

Dash (or minus or subtraction) followed by letter (or function name) causing syntax error in Perl

我很惊讶

sub f{1};

my $answer = 1-f(1);

当我期望它执行减法时,在 Perl 中给我一个语法错误。添加 space 使其再次正常工作:

sub f{1};

my $answer = 1- f(1);

为什么这会导致 Perl 语法错误?有歧义吗?破折号是否被解释为函数名称的一部分?

-f 测试文件是否为纯文件,因此它对 perl 没有意义,因为它看不到 - 符号。这就是为什么这会如您所料的那样工作,因为没有 -fo 测试。

sub fo{1} my $answer = 1-fo(1);  

(也没有+f测试)

sub f{1} my $answer = 1+f(1);