如何检查是否安装了Perl模块?

tst*_*ner 10 perl module

我正在编写一个小的Perl脚本,它依赖于一些可能的模块,因此在安装过程中我必须检查是否每个都有.我可以写use some::module,看看是否出现错误,但是像"你需要安装一些:: module"这样的短消息对于最终用户会更有帮助.

我也可以只搜索每个目录@INC,但是因为它是Perl,所以必须有一个更简单的方法.

jj3*_*j33 19

perl -MSome::Module -e ';'
Run Code Online (Sandbox Code Playgroud)

哎呀,误读了这个问题.我以为你想知道一次性的事情,而不是以可恢复的方式发现它.我总是使用这样的东西:

sub try_load {
  my $mod = shift;

  eval("use $mod");

  if ($@) {
    #print "\$@ = $@\n";
    return(0);
  } else {
    return(1);
  }
}
Run Code Online (Sandbox Code Playgroud)

您使用的是这样的:

$module = 'Some::Module';
if (try_load($module)) {
  print "loaded\n";
} else {
  print "not loaded\n";
}
Run Code Online (Sandbox Code Playgroud)