Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 向CPAN发行版添加实用程序模块的正确方法是什么?_Perl_Cpan - Fatal编程技术网

Perl 向CPAN发行版添加实用程序模块的正确方法是什么?

Perl 向CPAN发行版添加实用程序模块的正确方法是什么?,perl,cpan,Perl,Cpan,我想将的Makefile.PL中的一些内容分解成几个单独的类。这些类只能由Makefile.PL使用。因此,我确实想要它们 不由暂停索引器索引 不作为模块的一部分安装 我是否应该像那样把它们放在inc中?我还应该注意什么?暂停在META.yml文件(规范:,)中查找无索引参数。ExtUtils::MakeMaker生成的默认META.yml包含 no_index: directory: - t - inc 但如果您愿意,可以添加更多数据 pack

我想将的
Makefile.PL
中的一些内容分解成几个单独的类。这些类只能由
Makefile.PL
使用。因此,我确实想要它们

  • 不由暂停索引器索引
  • 不作为模块的一部分安装

  • 我是否应该像那样把它们放在
    inc
    中?我还应该注意什么?

    暂停在META.yml文件(规范:,)中查找
    无索引
    参数。
    ExtUtils::MakeMaker
    生成的默认META.yml包含

    no_index:
        directory:
            - t
            - inc
    
    但如果您愿意,可以添加更多数据

        package:
            - Some::Package::Used::For::Building::But::Not::To::Be::Installed
        file:
            - a-file/with/a/package/statement/that-should-be/ignored.pm
    

    这里确实有两个问题。一种是防止PAUSE为发行版中的额外模块编制索引,这样它们就不会出现在软件包中,以及如何避免欺骗用户安装它们

    暂停回答是正确的修复、无索引的
    no_index
    内容以及伪造手表的古老民间传说的组合。PAUSE希望发现您的发行版中有哪些软件包。它在名称空间的同一行上查找。如果它不在同一行上,暂停就会经过它。因此,您将在一些旧的“隐藏”模块中看到以下行:

     package # separate lines get past PAUSE
          Some::Helper::Module;
    
    如果你喜欢看幕后,相关代码在(中)


    另一个问题是不要在发行版中安装额外的东西。索引与此无关。构建文件将大量内容移动到blib(构建库)中,为安装做好准备。任何在那里结束的东西都会被安装。诀窍是不要让构建器将助手模块放在那里。只要不将它们放在发行版的顶层或lib目录中,这通常不是问题。

    这听起来是转换为Dist::Zilla,然后将新功能放入dzil插件的理想时机。@你说得对。可悲的是,我觉得我可能永远不会理解Dist::Zilla,更不用说正确地使用它了。好吧,这就引出了另一个问题:我不认为dzil是这个问题的解决方案。看起来您正在谈论Makefile.PL在安装时所做的事情。Zilla插件在tarball创建时运行。(我仍然建议使用dzil获得其他好处,但这不是它试图解决的问题。)@cjm我意识到了这一点,并更新了我的另一个问题。有没有一种方法可以使用包含必要的安装时功能的
    Dist::Zilla
    生成
    Makefile.PL