以下文件无法编译:
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/