当前位置:  开发笔记 > 编程语言 > 正文

如何使用CPAN.pm下载其他Perl模块?

如何解决《如何使用CPAN.pm下载其他Perl模块?》经验,为你挑选了2个好方法。

我是面向对象编程的新手,CPAN.pm上的perldoc页面让我感到困惑.我的程序需要下载几个模块(如果它们尚不存在).这基本上只是:

CPAN::Shell->install("Module::Name::Here");

或者还有更多吗?是下载软件包,解压缩并安装它,还是仅仅执行其中一个或两个步骤?如果不是全部三个,我该如何做另一个(或两个)?我希望它确保它不会尝试重新安装任何东西,如果包已经存在 - 这是该函数的默认行为还是没有?

如何判断Perl是否无法连接到CPAN以获取包?



1> brian d foy..:

没有人提到它,但你必须先加载CPAN配置:

use CPAN;

CPAN::HandleConfig->load;
CPAN::Shell::setup_output;
CPAN::Index->reload;

# now do your stuff

您还可以查看CPAN.pm附带的cpan(1)脚本,以查看许多程序员的界面.我还写了最新一期Perl Review的文章,其中展示了CPAN.pm的程序员界面示例.

但是,您可能不需要执行任何操作.为什么你的程序自己下载模块?您是否尝试创建具有依赖关系的分发?有更好的方法来处理它,所以你不必重复已经在其他工具中完成的工作.例如,请参阅我的文章Creating Perl Application Distributions.您将程序看作是一个模块,并获得所有酷模块工具的好处,因此您不必重新发明一些东西.

如果你告诉我们更多你正在尝试解决的问题,我们也可能有其他好的答案.:) 祝好运,



2> xdg..:

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;
}

祝你好运!

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有