Dash(或减号或减号)后跟字母(或函数名称),导致Perl中出现语法错误

mar*_*aft 5 syntax perl syntax-error

我很惊讶

sub f{1};

my $answer = 1-f(1);
Run Code Online (Sandbox Code Playgroud)

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

sub f{1};

my $answer = 1- f(1);
Run Code Online (Sandbox Code Playgroud)

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

Сух*_*й27 9

-f测试文件是否是纯文件,因此perl没有意义,因为它看不到-符号.这就是为什么它按预期工作,因为没有-fo测试.

sub fo{1} my $answer = 1-fo(1);  
Run Code Online (Sandbox Code Playgroud)

(也没有+f测试)

sub f{1} my $answer = 1+f(1);  
Run Code Online (Sandbox Code Playgroud)

  • 更有可能的是,针对单字母子程序名称的争论:-) (6认同)
  • @mob,不,这是空格键的工作. (6认同)