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

perl – 为什么“包”关键字有时由包名称中的注释分隔?

发布时间:2020-12-15 21:27:27 所属栏目:大数据 来源:网络整理
导读:分析CPAN模块的来源我可以看到如下: ...package # hide from PAUSE Try::Tiny::ScopeGuard;... 很明显,这是从Try :: Tiny取得的,但是我也在其他模块中看到了package关键字和包标识符之间的这种意见. 为什么要使用这个程序?它的目标是什么,它有什么好处?
分析CPAN模块的来源我可以看到如下:
...
package # hide from PAUSE
   Try::Tiny::ScopeGuard;
...

很明显,这是从Try :: Tiny取得的,但是我也在其他模块中看到了package关键字和包标识符之间的这种意见.

为什么要使用这个程序?它的目标是什么,它有什么好处?

解决方法

从PAUSE的索引器中隐藏一个包的确是一个黑客.

当分发上传到PAUSE时,索引器将检查上传中的每个文件,查找分发包中包的名称.任何索引的包都可以显示在CPAN搜索结果中.

索引器不希望发现您的软件包有很多原因.您的发行版可能会有许多小型或微不足道的软件包,会使模块的搜索结果混乱.您可能在t(测试)目录或其他非标准目录中定义了软件包,这些目录不会作为分发版本的一部分进行安装.您的发行版可能包含来自完全不同的分发文件(其他人写的).

hack的工作原理是因为索引器严格查找关键字包和在同一行上看起来像包名称的表达式.

如今,您可以在发行版中添加META.yml文件. PAUSE索引器将在此文件中查找并遵守no_index规范.但是,这是索引器的一个相对较新的功能,因此旧版模块和旧版CPAN贡献者仍将使用换行符.

以下是Forks::Super的no_index规范示例

no_index:
    directory:
        - t
        - inc
    package:
        - Sys::CpuAffinity
        - Signals::XSIG
        - Signals::XSIG::Default
        - Signals::XSIG::TieArray56

Sys :: CpuAffinity和信号:: XSIG是独立的分发,也与Forks :: Super包装.一些测试脚本包含不应该编入索引的包声明(例如Arbitrary::Test::Package).

(编辑:李大同)

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

    推荐文章
      热点阅读