在perl中使用子函数警告

ssr*_*012 2 perl

sub SampleFunc() { ... }和之间有什么区别sub SampleFunc { ... }

因为如果我使用()括号,我会在编译时收到警告perl -wc Testing.如果我没有使用()括号,sub SampleFunc我肯定没有收到警告信息.

例如:

 $sampleout = cleartex($sampleinput);
Run Code Online (Sandbox Code Playgroud)

错误信息:

 main::cleartex() called too early to check prototype at Sample.pl line xxx.
Run Code Online (Sandbox Code Playgroud)

你能不能请一个人解释一下.如果我删除()那么可能会收到输出的任何重大差异?

Sob*_*que 6

如果使用括号声明子例程,则定义perl原型.这通常不是你想要做的事情,因为perl原型不是你从其他语言中识别的那种.

perldoc原型

大多数情况下,你不应该在正常的练习中使用它们 - 它们的用途/原因非常小,而且主要是当你试图以不同的方式重新实现某些内置函数时.

只是失去原型,继续你的一天,你会没事的.

  • 此外,`sub cleartex()`中的原型声明子程序采用*无参数*,这显然不是OP想要的. (4认同)