Perl 最棒的地方之一是 The CPAN,即综合 Perl 归档网络。这是一个镜像服务,大约在 Perl 5 最初出现的时候,人们就可以共享有用的附加模块,比如XML::Simple
或SOAP::Lite
通过标准的通用工具,cpan
即 Perl 附带的客户端。几乎所有的 Perl 发行版(例如 Strawberry Perl 和大多数 Linux 附带的 Perl 发行版)都配置并包含了 CPAN 客户端。这个客户端让人们只需知道模块的名称就可以从 CPAN 下载和安装模块。
CPAN 上几乎所有的模块分布都遵循完全相同的布局。它们通常有一个Makefile.PL
文件(如果它使用 ExtUtils::MakeMaker 生成安装脚本)、Build.PL
文件(如果它使用 Module::Build 生成安装脚本)或两者兼有。这些 Perl 脚本一旦运行,就会创建一个“Makefile”或“Build”文件,可以让您安装模块并验证是否满足所有先决条件。
如果您以前从未制作过 Perl 发行版,您可以从 CPAN 下载您想要的任何发行版并查看其布局。一旦您看到文件夹和文件位置,就会非常直观。它们通常与根目录中的安装脚本和支持文件(如自述文件)一起布局,目录中包含自定义模块(您制作的模块),lib
目录中包含单元测试t
。
Build.PL
如果您是新手,我建议您查看基于基础的;这些是纯粹的基于 Perl 的安装脚本。如果您决定制作基于 Module.PL 的发行版,则很容易指定您的模块发行版需要XML::Simple
和SOAP::Lite
. 首先,创建一个基于 Module::Build 的基本安装脚本。这看起来像:
use Module::Build;
my $build = Module::Build->new(
module_name => 'Foo::Bar',
license => 'perl',
requires => {
'perl' => '5.6.1',
'Some::Module' => '1.23',
'Other::Module' => '>= 1.2, != 1.5, < 2.0',
},
);
$build->create_build_script;
(这取自Module::Build::Authoring文档)。
然后,指定您需要的库和它们的最低版本。如果您不在乎,零 (0) 是可接受的版本,但这意味着“任何东西”都很好。我建议至少指定您正在测试的机器上安装的库的版本。
(简洁的捷径:您可以通过以下方式找到任何具有 $VERSION 包变量的库的版本:
perl -MSome::Lib -E "say Some::Lib->VERSION()"
.)
要安装模块,步骤如下所示:
cd folder\where\my\lib\is
perl Build.PL
Build
Build test
Build install
这将创建安装工具,准备用于测试的文件夹(通常只是将内容复制到简单模块的构建库区域),运行t
文件夹中的所有 .t 脚本(“测试”,通常Test::More
用于模块的单元测试在安装之前),最后,将您的模块安装到您 PC 的 Perl 站点库中。
作为“设置”阶段的一部分,该Build
脚本将查看您的先决条件,并在您还没有它们时警告您。
然后,正如ikegami的回答中指出的那样,如果您使用cpanm客户端安装您的库,cpan客户端会自动为您下载,测试和安装您的依赖项!或者,Build.PL
基于安装程序也有“installdeps”选项,它会做同样的事情。然后自动下载、测试和安装任何和所有依赖项(以及潜在的递归依赖项),即使它们将来发生变化。