我想另一个开发人员运行我写的Perl脚本。该脚本使用许多CPAN模块,必须先安装,然后才能运行脚本。是否有可能使脚本(或perl二进制)转储所有丢失的模块的列表?当我尝试运行脚本时,Perl打印出缺少的模块名称,但这是详细的,并不会一次列出所有缺失的模块。我想做一些事情:
$ cpan -i `said-script --list-deps`
甚至:
$ list-deps said-script > required-modules # on my machine $ cpan -i `cat required-modules` # on his machine
有没有简单的方法来做呢?这不是一个显示停止,但我想让其他开发人员的生活更轻松。 (所需的模块被洒在几个文件,所以我不容易手工制作列表而没有丢失任何东西我知道大约PAR,但似乎有点太复杂,我想要的。
更新:谢谢,曼尼,会做。我不知道%INC,我只知道@INC。我决定用这样的东西:
print join("\n",map { s|/|::|g; s|\.pm$||; $_ } keys %INC);
其中打印出:
Moose::Meta::TypeConstraint::Registry Moose::Meta::Role::Application::ToClass Class::C3 List::Util Imager::Color …
看起来这将工作。
解决方法
您可以在脚本结尾转储%INC。它将包含所有使用和需要的模块。但是,当然,这只会有帮助,如果你不需要有条件的模块(如果$ bar需要Foo)。