CPAN.pm 上的 perldoc 页面把我搞糊涂了。
是的,CPAN API 的文档仍然有点缺乏。它并不是真正为其他人编程使用而设计的。如果您可以使用CPANPLUS,您可能会有更好的运气。
如果它们不存在,我的程序需要下载几个模块。这基本上只是:CPAN::Shell->install("Module::Name::Here");
是的,这就是最简单的事情。事实上,当你输入“cpan Module::Name::Here”时,'cpan' 命令行程序所做的几乎都是如此。但是,您需要提前配置 CPAN.pm。
那会下载软件包,解压缩并安装它吗?
是的,三个都行。
如果包已经存在,我希望它确保它不会尝试重新安装任何东西 - 这是函数的默认行为还是没有?
是的,如果模块是最新的,默认行为是不安装任何东西。您实际上可以使用“uptodate()”方法检查自己,如下所示:
my $mod = CPAN::Shell->expand("Module", "Module::Name::Here");
$mod->install unless $mod->uptodate;
我如何判断 Perl 是否无法连接到 CPAN 来获取软件包?
这很难以易于解释的方式以编程方式完成。您要么需要查看输出,要么只需检查 $mod->uptodate 之后;
my $mod = CPAN::Shell->expand("Module", "Module::Name::Here");
if ( ! $mod->uptodate ) {
$mod->install;
die "Problems installing" unless $mod->uptodate;
}
祝你好运!