"sub main ... &main();"方法(子主模式)在Perl中有什么好处?



几年前,除了最简单的Perl脚本外,我对所有脚本都采用了以下"模式":(我甚至不记得我第一次看到它的地方,这当然不是我的真正想法。)

use strict;
...
sub main {
  ...
}
... possibly more subs ...
... at the end of the file:
#############
# Call main #
&main();
#############

这有什么好处吗?我发现代码有点干净,但除此之外,我不确定这是否有任何目的,使我的C程序员高兴:-)

欢迎来自Perl专家和高级用户的见解。(我肯定两者都不是)

限制作用域是众所周知的习惯用法。这在https://stackoverflow.com/q/1183876#comment-1012787 ff中有讨论。和http://use.perl.org/comments.pl?sid=43991&cid=70918 ff.

它提供了一个作用域,以避免在子节点中意外使用错误的变量。{ ... }也会这样做,但是使用sub允许将主代码放在文件的顶部,同时仍然执行文件中的其他初始化代码。

我个人用过

{
   ...  # Extract command line switches from @ARGV
   ...  # Perform input validation
   exit(main(@ARGV));
}

效益?不,除非你需要重用主子。在某些情况下,它可能会降低可读性,但我对此表示怀疑。

有一点是不同的,例如:
my $arg = shift;

将影响@_而不是@ARGV,并且@ARGV不会自动传递给main()@ARGV在子目录中仍然是可见的,但是你必须显式地把它改成shift @ARGV

一个优点可能是它使您的程序更容易变成模。

在使用了大量Perl之后,我想说这只是让您感到高兴的事情。我怀疑它会更快或更慢。

只是为了使我的回答有些用处,我要指出你在潜艇呼叫中不需要&&使@_对子节点可见,但空父节点否定了这一点。

相关内容

  • 没有找到相关文章

最新更新