我想在给定的目录树下获取已安装的perl模块和版本的列表。
我想完成与 python 模块pip freeze --user
相同的任务。
我们通常在给定的目录中安装软件,例如foo-1.0.0
将安装到/soft/foo/1.0.0
并且所需的 perl 模块将安装到 /soft/foo/1.0.0/lib/perl5
。
为了能够在相同的条件下复制构建和安装,我们需要能够获得已安装的perl模块及其版本的列表。
使用以下Perl程序
#!perl
use ExtUtils::Installed;
my $inst = ExtUtils::Installed->new(@ARGV ? (inc_override => @ARGV) : ());
my @modules = $inst->modules;
foreach (sort @modules) {
print "$_ => ", $inst->version($_), "n";
}
它需要一个要搜索的目录列表。如果没有给出参数,则使用@INC的内容
您还可以使用 CPAN 模块的自动捆绑功能perl -MCPAN -e autobundle
该功能将生成所有已安装模块的捆绑包文件