如何在我想给别人的perl脚本中使用CPAN模块?

我正在编写一个Perl脚本,它将数据写入Excel文件。 我正在使用Excel::Writer::XLSX来执行此操作。

我希望编写脚本,然后把它交给我的团队的其他成员,这样我们就可以在需要的时候使用它来编译数据。

我有几个关于这个问题:

  1. 我的同事是否需要安装该模块才能使脚本正常工作?

  2. 如果不是的话,我怎样用脚本包装这个模块才能给它们?

  3. 有没有更好的方式来做到这一点,使用我select的模块?

有几种方法可以做到这一点。 一种select是放在一起指定依赖关系的Makefile.PL 。 这使您可以将脚本捆绑为分发。 例如

 use ExtUtils::MakeMaker; WriteMakefile( ABSTRACT => 'myscript creates Excel files', AUTHOR => 'AU Thor', EXE_FILES => [ 'myscript' ], NAME => 'myscript', VERSION => '1.2.3', PREREQ_PM => { 'Excel::Writer::XLSX' => '0.88', }, ); 

然后,人们可以做perl Makefile.PL这将通知他们的依赖关系。 如果你确实make dist ,并且分发生成的存档文件,他们也可以使用cpanm来安装你的脚本及其依赖关系。

另一个select是放在一起cpanfile 。 然后,收件人可以使用cpanm等工具安装所有依赖项 。

现在,如果你正在把脚本分发给那些通常不使用Perl的人,并且你希望他们能够点击并运行等,那么你可能需要查看pp 。

很久以前,我写了一个叫做scriptdist的程序,把一个单文件程序变成一个类似CPAN的发行版,并且有一个构build文件。 这样,你可以把它作为一个档案传递,人们可以像对待任何其他CPAN分配一样对待它。 它基本上自动化思南张贴 。 我为多布斯博士写了这篇文章 。

如果你想传递档案,你可以使用一个技巧。 cpan工具可以从当前目录安装。 这将得到依赖关系(依赖于依赖关系的性质是必需的):

  $ cpan . 

这样,你就可以安装你的程序和它的依赖关系,而不需要把任何东西放到类似CPAN的仓库中。

目前还不清楚你需要知道什么

我的同事是否需要安装该模块才能使脚本正常工作?

我认为你的同事显然需要访问你的代码才能够使用它

不清楚你写了什么,但是如果你创build了一个模块,那么任何可以访问你的模块文件的程序都可以简单地use它来访问它的function

如果不是的话,我怎样用脚本包装这个模块才能给它们?

你的“如果不是”不清楚。 你写的意思是“如果他们不需要安装模块来为脚本工作” ,我怀疑这是你的意图

“如何用脚本包装模块”你是问如何创build一个模块,或者你已经有一个? 通常,程序员通过use语句编写脚本来访问模块

如果你有一个模块,并希望其他人能够use它,那么它必须出现在他们的@INC数组中所列的目录之一中。 如果您正在单独的系统上工作,那么最好创build一个可根据需要进行更改并使其他更新的软件包

有没有更好的方式来做到这一点(比)使用我select的模块?

您是指Excel::Writer::XLSX或您自己的模块?

如果Excel::Writer::XLSX正在做你所需要的,那么你可能不会改变。 但是,如果你在某种程度上遇到了问题,那么你需要提出一个新的问题并描述这些问题