首页 > 解决方案 > perl 相当于 pip freeze

问题描述

我想获取给定目录树下已安装的 perl 模块和版本的列表。

我想完成与pip freeze --userpython 模块相同的任务。

我们通常将软件安装在给定的目录中,例如foo-1.0.0将安装到/soft/foo/1.0.0 所需的 perl 模块将安装到/soft/foo/1.0.0/lib/perl5.

为了能够在相同条件下复制构建和安装,我们需要能够获取已安装的 perl 模块列表及其版本。

标签: pythonperl

解决方案


使用以下 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将生成所有已安装模块的捆绑文件


推荐阅读