在perl模块中,子函数后需要分号吗?

And*_*rew 1 perl module

我正在编写工作代码,并遇到了一个有趣的问题.我搜索了关于这个主题的资源,但没有找到明确的答案.

在Perl模块中编写子函数时,在结束括号后是否需要分号?

如:

sub printFoo {

print "foo";

};
Run Code Online (Sandbox Code Playgroud)

这是否与常规Perl脚本中的子函数有所不同?

当我在没有分号的模块中使用上述函数时,我得到一个引用"未定义子例程"的错误.

我有信心在过去我使用了类似的代码片段而没有分号后面的分号,但现在我不再积极了.

向正确的方向推进会很棒!

Сух*_*й27 5

如果您正在编写匿名函数,那么您需要使用分号,即.

my $func = sub {
   print "foo";
};
Run Code Online (Sandbox Code Playgroud)

对于普通函数,不需要分号,实际上解析器适用于:

perl -MO=Deparse semi
sub printFoo {
    print 'foo';
}
Run Code Online (Sandbox Code Playgroud)

-

cat semi
sub printFoo {

print "foo";

};
Run Code Online (Sandbox Code Playgroud)