获取完整的Perl模块集

时间:2014-01-17 22:12:36

标签: linux perl

虽然递归所有@INC目录会给你“Perl知道的”模块,但找到所有模块的最简洁方法是什么? (Linux)系统?

1 个答案:

答案 0 :(得分:3)

这是一个Perl常见问题,即如何找到我的系统上安装的模块?,您可以通过perldoc -q installedperldoc perlfaq3找到此问题的答案然后搜索“已安装”。

以下是对此问题的'perlfaq3.pod'答案的摘要,以及根据我的测试对答案本身的一些注意事项:

  1. 在命令行上使用cpan

    cpan -l
    

    注意:您可能需要安装额外的软件包才能使用此命令,例如,您需要在Fedora 19中安装“perl-CPAN”。

  2. 在Perl脚本中使用ExtUtils::Installed

    use ExtUtils::Installed;
    
    my $inst    = ExtUtils::Installed->new();
    my @modules = $inst->modules();
    

    注意:这可能无法列出您的包管理系统安装的所有模块。

  3. 使用File::Find::Rule查找所有模块文件:

    use File::Find::Rule;
    
    my @files = File::Find::Rule->
            extras({follow => 1})->
            file()->
            name( '*.pm' )->
            in( @INC )
            ;
    

    注意:这不是标准模块,您可能需要先安装它。

  4. 使用File::Find查找所有模块文件:

    use File::Find;
    my @files;
    
    find(
        {
            wanted => sub {
                push @files, $File::Find::fullname
                    if -f $File::Find::fullname && /\.pm$/
            },
            follow => 1,
            follow_skip => 2,
        },
        @INC
    );
    
    print join "\n", @files;
    
  5. 如果您知道模块名称并且只想检查它是否存在于您的系统中,您可以使用以下命令:

    perldoc Module::Name
    

    perl -MModule::Name -e1
    
  6. 以下链接也可能有所帮助: