我有一个Perl脚本(独立程序),其中包含一些我想在其他脚本中重用的子脚本。由于执行环境的限制,我无法将函数移动到公共.pm
文件。
是否可以区分脚本是作为独立程序运行还是由另一个脚本require
编辑/ do
编写?
我唯一能找到的就是在顶层使用caller
:当require
ed caller
显示谁加载了模块时,独立程序没有任何来电者。有没有更好的解决方案?
答案 0 :(得分:9)
是的,您的caller
方法是正确的 - 这是brian d foy命名为“modulinos”的技术。我猜brian发明了它,除非有人启发我的相反。
modulino的主要工作部分看起来像这样(来自下面的SO答案):
__PACKAGE__->run( @ARGV ) unless caller;
sub run {
my( $class, @args ) = @_;
}
1;
以下是一些参考文献:
"Modules as Programs" chapter from "Mastering Perl" book by brian d foy
"Scripts as Modules" article in Dr. Dobbs
"How a script becomes a module" article on perlmonks
What should I put in my starter template for my Perl programs?