Perl脚本可用作程序和模块

时间:2010-08-03 10:42:27

标签: linux perl

我有一个Perl脚本(独立程序),其中包含一些我想在其他脚本中重用的子脚本。由于执行环境的限制,我无法将函数移动到公共.pm文件。

是否可以区分脚本是作为独立程序运行还是由另一个脚本require编辑/ do编写?

我唯一能找到的就是在顶层使用caller:当require ed caller显示谁加载了模块时,独立程序没有任何来电者。有没有更好的解决方案?

1 个答案:

答案 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?