Excel 如何在我想要提供给其他人的perl脚本中使用CPAN模块?

Excel 如何在我想要提供给其他人的perl脚本中使用CPAN模块?,excel,perl,module,cpan,Excel,Perl,Module,Cpan,我正在编写一个Perl脚本,它获取数据并将其写入Excel文件。我过去经常这样做 我希望编写脚本,然后将其交给我的团队的其他成员,以便我们可以在需要时使用它来编译数据 关于这一点,我有几个问题: 我的同事是否需要安装模块以使脚本正常工作 如果没有,我如何用脚本包装模块以将其提供给他们 有没有比使用我选择的模块更好的方法 有几种方法可以做到这一点。一个选项是组合一个指定依赖项的Makefile.PL。这允许您将脚本捆绑为发行版。例如 use ExtUtils::MakeMaker; WriteM

我正在编写一个Perl脚本,它获取数据并将其写入Excel文件。我过去经常这样做

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

关于这一点,我有几个问题:

  • 我的同事是否需要安装模块以使脚本正常工作

  • 如果没有,我如何用脚本包装模块以将其提供给他们

  • 有没有比使用我选择的模块更好的方法


  • 有几种方法可以做到这一点。一个选项是组合一个指定依赖项的
    Makefile.PL
    。这允许您将脚本捆绑为发行版。例如

    use ExtUtils::MakeMaker;
    
    WriteMakefile(
        ABSTRACT          => 'myscript creates Excel files',
        AUTHOR            => 'A.U. Thor',
        EXE_FILES         => [ 'myscript' ],
        NAME              => 'myscript',
        VERSION           => '1.2.3',
    
        PREREQ_PM => {
            'Excel::Writer::XLSX' => '0.88',
        },
    );
    
    然后,人们可以执行
    perlmakefile.PL
    ,这将通知他们依赖关系。如果您使用
    生成dist
    ,并分发生成的存档文件,则他们还可以使用来安装脚本及其依赖项

    另一个选择是把一个。然后,收件人可以使用工具(如)安装所有依赖项


    现在,如果您将脚本分发给不正常使用Perl的人,并且希望他们能够单击并运行等,那么您可能需要研究一下。

    很久以前,我编写了一个名为scriptdist的程序,将单个文件程序转换为类似CPAN的分发版,并完成一个构建文件。通过这种方式,您可以将其作为归档文件传递,人们可以像对待任何其他CPAN发行版一样对待它。它基本上是自动化的。我为此写了一封信

    如果您想传递归档文件,可以使用一个技巧。
    cpan
    工具可以从当前目录安装。这将获得依赖项(依赖项的性质是必需的):


    这样,您就可以安装您的程序及其依赖项,而无需将任何内容放入类似CPAN的存储库。

    您需要了解的内容还很不清楚

    我的同事是否需要安装模块以使脚本正常工作

    我认为很明显,您的同事需要访问您的代码才能使用它

    不清楚您写了什么,但是如果您创建了一个模块,那么任何可以访问模块文件的程序都可以使用它来访问其功能

    如果没有,我如何用脚本包装模块以将其提供给他们

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

    “如何用脚本包装模块”您是在问如何创建模块,还是已经有了模块?通常,使用
    use
    语句编写脚本的程序员可以访问模块

    如果您有一个模块,并且希望其他人能够使用
    use
    加载该模块,则该模块必须出现在其
    @INC
    数组中列出的目录之一中。如果您在单独的系统上工作,那么最好创建一个包,您可以根据需要进行更改,并让其他人进行更新

    有没有比使用我选择的模块更好的方法

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


    如果
    Excel::Writer::XLSX
    正在做您需要的事情,那么您可能不会改变。但是,如果您在某些方面遇到问题,那么您需要提出一个新问题并描述这些问题

    另请参见我认为您或Brian都没有解决OP的具体问题我认为您或Sinan都没有解决OP的具体问题我不同意。我不认为你的回答改善了我和西南所说的,你提出的问题超出了向他的同事提供课程的必要性。你可能是对的,也许我误解了最初的问题。但在这种情况下,尤其是你忽略了OP的三个问题,我认为准确描述你回答的问题会有很大帮助
     $ cpan .