假设我有一个Perl文件,其中只有在我被称为脚本时才需要运行的部分.我记得有时读过在main()方法中包含这些部分并做一个
main() unless(<some condition which tests if I'm being used as a module>);
Run Code Online (Sandbox Code Playgroud)
但我忘了条件是什么.搜索Google并没有发现任何有益的结果.有人能指出正确的地方寻找这个吗?
我基于以下模板/骨架上的Perl脚本占主导地位:
#!/usr/bin/perl -w
use strict;
use utf8;
$| = 1;
binmode(STDOUT, ":utf8");
# my code goes here.
Run Code Online (Sandbox Code Playgroud)
这个模板实现的目标:
-w)use strict)use utf8+ binmode(STDOUT, ":utf8"))$| = 1)我的问题是:
如何改进我的模板以更好地反映Perl最佳实践?
在这个早期的Stackoverflow问题中,特别是brian d foy的"脚本如何成为一个模块"我已经阅读了如何设置代码,以便它可以作为脚本或模块运行,使用这种技术:
package SomeModule;
__PACKAGE__->run(@ARGV) unless caller();
sub run {
# Do stuff here if you are running the file as
# a script rather than a module.
}
Run Code Online (Sandbox Code Playgroud)
__PACKAGE__这个设置的目的是什么?为什么不这样做呢?
run(@ARGV) unless caller();
Run Code Online (Sandbox Code Playgroud)