如何在命令行中检查Perl模块是否已安装?

76

我尝试检查一下系统中是否已安装XML::Simple模块。

perl -e 'while (<@INC>) { while (<$_/*.pm>) { print "$_\n"; } }'

上述一行代码用于列出我系统中安装的所有模块。然而,它没有列出XML模块。

但是,下面的代码可以正常执行。

perl -e "use XML::Simple "

可能是什么问题?


@Sinan:你改变了问题的意思。我认为原来的问题是如何找出模块安装的位置,现在变成了是否安装了一个模块。 - innaM
我真的不知道。但考虑到当前的问题,你的答案到目前为止是最好的。也许Chells能给我们一些启示。 - innaM
1
@Sinan:为什么你把标签从perl-module改成perl-modules,后者几乎没有使用? - Greg Bacon
http://theunixshell.blogspot.in/2012/12/check-for-installed-modules-in-perl.html - Vijay
11个回答

0
为@ user80168的解决方案喝彩(我仍在数\个!),但是为了避免与别名和 shell 相关的所有转义:
%~/ cat ~/bin/perlmod
perl -le'eval qq{require $ARGV[0]; } 
    ? print ( "Found $ARGV[0] Version: ", eval "$ARGV[0]->VERSION" ) 
    : print "Not installed" ' $1

运行相当良好。

这里可能是最简单和最“现代”的方法,使用 Module::Runtime

perl -MModule::Runtime=use_module -E '
     say "$ARGV[0] ", use_module($ARGV[0])->VERSION' DBI

如果模块没有安装,它将提供有用的错误提示。

使用 -MModule::Runtime 需要先安装它(不是核心模块)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接