perl - 为什么 Perl sub 需要 &

标签 perl compiler-errors subroutine reserved-words

以下文件无法编译:

sub s {
    return 'foo';
}
sub foo {
    my $s = s();
    return $s if $s;
    return 'baz?';
}

来自 perl -c 的错误是:
syntax error at foobar.pl line 5 near "return"
  (Might be a runaway multi-line ;; string starting on line 3)
foobar.pl had compilation errors.

但是如果我替换 s()&s()它工作正常。你能解释一下为什么吗?

最佳答案

& 前缀明确表示您要调用自己的名为“s”的函数,而不是任何具有相同名称的内置函数。在这种情况下,它会将其与替换运算符混淆(例如 $stuff =~ s///; ,也可以写作 s()() )。

这是a PerlMonks discussion about what the ampersand does .

关于perl - 为什么 Perl sub 需要 &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139542/

相关文章:

c++ - 为什么这是编译器错误? (g++)

c++ - 内联构造函数对vtable错误的 undefined reference

objective-c - 从 Swift 调用 Objective C setter 方法时“没有成员”

perl - 如何创建一个接受代码块的 Perl 子例程

javascript - perl:不向浏览器返回任何内容

Perl Tk 键绑定(bind)进入

perl - 在perl中从csv文件中删除多余的逗号

Perl - 将参数作为散列键值对问题传递给子例程

class - 在 Fortran 类中选择过程

regex - 如何使用正则表达式验证月份输入?