加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中重新分发非核心模块?

发布时间:2020-12-15 23:26:56 所属栏目:大数据 来源:网络整理
导读:我是Perl的新手,我需要一些帮助来重新分配非核心模块.这是整个故事. Perl脚本中使用了两个非核心模块:XML :: Simple和SOAP :: Lite.我正在使用的版本(目前在Windows上)是Strawberry Perl,所以这两个模块已经包含在内.但是,我们不知道最终用户(Unix / Linux
我是Perl的新手,我需要一些帮助来重新分配非核心模块.这是整个故事.

Perl脚本中使用了两个非核心模块:XML :: Simple和SOAP :: Lite.我正在使用的版本(目前在Windows上)是Strawberry Perl,所以这两个模块已经包含在内.但是,我们不知道最终用户(Unix / Linux系统)是否具有这两个模块,因为它们可能只有标准版本,因此只有核心模块.我的目标是让最终用户尽可能少地进行配置/安装.

首先,我试着看看是否有类似于XML :: Simple和SOAP :: Lite的核心模块.不幸的是,我没有发现任何问题(如果我错了请纠正我).

所以我想现在唯一的选择是重新分配这两个模块.我查了一下,这两个模块允许重新分配.我现在的问题是如何做到这一点.我尝试使用关键字“perl redistribute”搜索,但没有找到任何有用的东西.我的猜测是我们使用导出工具来实现这一目标.但这两个模块是相当复杂的模块,它们有几个嵌套的文件夹/ p??m文件(以及一大堆其他文件,如MAKE,pod,ini文件),所以我不确定我应该做什么.我使用导出器找到的示例相当简单:它们只有1 pm文件和1 pl文件,它们被放在一个文件夹中.

此外,我愿意接受任何其他更好的方法来解决问题.目标只是确保所有最终用户都可以使用我的脚本进行最少的配置/安装工作,因为我们不希望它们遇到一大堆兼容性问题.

任何帮助,将不胜感激.谢谢! = d

解决方法

关于Perl的最好的事情之一是CPAN,即Perl Perlling Archive网络.它是一种镜像服务,因为Perl 5最初出现的时间允许人们通过标准的通用工具(Perl附带的cpan客户端)共享有用的附加模块,如XML :: Simple或SOAP :: Lite.几乎所有的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 folderwheremylibis
perl Build.PL
Build
Build test
Build install

这将创建安装工具,准备用于测试的文件夹(通常只是将内容复制到构建库区域以获取简单模块),在t文件夹中运行所有.t脚本(“tests”,通常使用Test::More进行单元测试安装之前的模块),然后最后,将您的模块安装到PC的Perl站点库中.

构建脚本作为“设置”阶段的一部分,将查看您的先决条件,并在您尚未拥有它们时发出警告.

然后,正如ikegami’s answer所指出的,如果您使用cpanm客户端安装库,cpan客户端将自动为您下载,下载,测试和安装您的依赖项!或者,基于Build.PL的安装程序也具有’installdeps’选项,它将执行相同的操作.然后,即使它们将来发生变化,也会自动下载,测试和安装任何和所有依赖项(以及可能的递归依赖项).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读