我最近创建了一个小型Perl应用程序,它利用了一些需要通过CPAN安装的非核心模块。
有没有办法分发应用程序,能够检查是否安装了所需的模块,如果不是,则从CPAN中提取它们?我想我正在寻找类似于CPAN自动依赖安装功能的东西。
我考虑过使用module-starter和Module :: Install创建类似模块的目录结构,然后定制Build文件将应用程序安装到/ bin ...但是我不确定这是不是鞋子-horn解决方案。
答案 0 :(得分:3)
这不是一个鞋拔的解决方案,而是正确的事情。你应该让一个专门的工具处理依赖关系,因为角落的情况,例如写下安装说明:
cpan .
。您无需更改Build文件以在bin
目录中安装程序,默认情况下会这样做。
答案 1 :(得分:-1)
BEGIN {
eval "use evil::module";
if($@) { `sudo perl -MCPAN -e 'install evil::module'`; exit ; }
}
您可以轻松检查是否存在某个模块,并且a)尝试安装它并退出/重新启动应用程序b)croak / die。 (好像在上面的代码片段中)
您还可以附加要打包的模块,将它们解压缩到某个目录,然后将dir推送到开始块中的@INC。