首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl中的"sub main ... &main();“方法(sub-main模式)有什么好处?

Perl中的"sub main ... &main();“方法(sub-main模式)有什么好处?
EN

Stack Overflow用户
提问于 2011-07-20 23:00:42
回答 5查看 10.3K关注 0票数 18

几年前,除了我最简单的Perl脚本之外,我对所有的脚本都采用了以下“模式”:(我甚至不记得在哪里第一次看到它,这肯定不是我真正的想法)。

代码语言:javascript
运行
复制
use strict;
...
sub main {
  ...
}
... possibly more subs ...

... at the end of the file:
#############
# Call main #
&main();
#############

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

感谢来自Perl专家和高级用户的任何见解。(我肯定都不是)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-21 00:22:05

这是一个众所周知的限制范围的习惯用法。https://stackoverflow.com/q/1183876#comment-1012787ff中对此进行了讨论。和http://use.perl.org/comments.pl?sid=43991&cid=70918ff。

票数 12
EN

Stack Overflow用户

发布于 2011-07-21 03:07:14

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

就我个人而言,我已经用过

代码语言:javascript
运行
复制
{
   ...  # Extract command line switches from @ARGV
   ...  # Perform input validation
   exit(main(@ARGV));
}
票数 7
EN

Stack Overflow用户

发布于 2011-07-20 23:20:11

收益?不,除非你需要重新使用主子节点。在某些情况下,它可能会简化可读性,但我对此表示怀疑。

不同的一点是,命令如下:

代码语言:javascript
运行
复制
my $arg = shift;

将影响@_而不是@ARGV,并且@ARGV不会自动传递给main()。在sub中,@ARGV仍然可见,但您必须显式地将其移位为shift @ARGV

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6763987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档