6
A
回答
10
请问我的Module::Extract::Use有帮助吗?有一个在例子的extract_modules program目录:
$ examples/extract_modules -l some_program
File::Spec
File::Spec::Functions
strict
warning
可以通过管道将列出来cpan
。
$ examples/extract_modules -l some_program | xargs cpan
一旦你的列表中,这是唯一依赖的第一级,你可以做一个script distribution,使人们能够使用普通的CPAN工具链安装的一切。
如果有些东西不适合你,请修改程序来处理它。如果您认为这对其他人有用,请发送拉取请求。 :)
1
那么这是这个很简单的方法我解决了这个问题。
在bash shell:
cat *.pl | grep "^use " | tr ';' ' ' | while read a b c; do echo $b; done | sort -iu > modules.txt
这给了我一个文件,只有模块名称,每行一个。
然后我用这个
cat modules.txt | while read a; do cpan $a; done
调用CPAN的文件中的每个模块的名称。然后坐在那里回答CPAN的问题,以便酌情安装依赖关系。
不漂亮,但这次它完成了工作。
3
我希望Module::ScanDeps它提供了命令行实用程序scandeps.pl在这里很有用,但我失望的是,Module::ScanDeps
显然不适合这个特定的目的,scandeps.pl
要么忽略缺少模块或(与-c
或-x
)嘎嘎叫着当脚本使用未安装的模块。
这里是一个quick'n'dirty Perl脚本试图使用do直到成功执行脚本:
#!/usr/bin/perl
use strict;
use warnings;
use Term::Prompt;
my ($script) = @ARGV;
die "Provide script file name on the command line\n"
unless defined $script;
until (do $script) {
my $ex = [email protected];
if (my ($file) = $ex =~ /^Can't locate (.+?) in/) {
my $module = $file;
$module =~ s/\.(\w+)$//;
$module = join('::', split '/', $module);
print "Attempting to install '$module' via cpan\n";
system(cpan => $module);
last unless prompt(y => 'Try Again?', '', 'n');
}
else {
die $ex;
}
}
如果你不希望运行脚本,则可以运行perl -c $script
,捕获stderr
输出并解析丢失的模块消息,并为找到的每个此类模块调用cpan
,直到perl -c $script
输出“语法OK”。这也给你一个更清洁的循环。我稍后再看。
您可能会错过使用此技术在运行时加载的依赖项。
0
相关问题
- 1. 如何查找Perl脚本使用的所有模块?
- 2. Perl脚本使用DBI模块访问不同安装的MySQL
- 3. 如何在Android的脚本层(SL4A)上安装Perl模块?
- 4. 如何找到已安装的Perl模块的版本?
- 5. 查找python脚本所需的模块
- 6. 如何在Perl脚本中包含所有/某些“子模块”?
- 7. Perl模块安装?
- 8. Groovy脚本查找名称为“Team CT”的所有作业并禁用它们
- 9. 的Perl模块安装
- 10. perl的安装模块
- 11. 如何在Perl中检查已安装的Apache模块?
- 12. 我的Perl脚本如何在同一目录中找到它的模块?
- 13. 如何检查是否安装了所有由Python脚本导入的模块而不运行脚本?
- 14. 如何在Windows上安装perl模块?
- 15. 如何使用shell脚本查找下一个[]并注释它们之间的所有行?
- 16. 从bash安装本地perl和模块
- 17. Perl DBD :: Oracle模块安装
- 18. 安装Perl模块,没有提示
- 19. 使用cpan安装后仍未找到Perl模块
- 20. 如何将perl模块合并到脚本中
- 21. 如何安装python的coverage模块并在Windows中使用它的命令行
- 22. 如何找到不同的Python安装并删除它们?
- 23. 在Ruby上使用某些模块而不安装它们
- 24. 如何使用系统命令安装cpan模块 - perl
- 25. 查找HTML页面中的所有iFrame并替换它们
- 26. CPAN Perl模块安装程序没有找到tar文件
- 27. 如何检查Perl模块是否安装?
- 28. PERL Web开发:找不到Perl模块,但已安装
- 29. 如何查找jre或jdk是否安装在Mac中,如果没有使用shell脚本安装jre
- 30. shell脚本自动安装cpan模块
看起来很有希望 – Nifle 2009-08-21 17:17:19