如何告诉CPAN(Perl)有关使用元编程创建的包?

Eri*_*rom 7 perl cpan metaprogramming

我有几个CPAN模块,它们广泛使用元编程来减少锅炉板并简化重构.

然而,这样做的结果是有许多程序包以编程方式创建,因此package X::Y::Z;CPAN的源代码中永远不会有一行找到(然后用于将命名空间添加到先来保留的命名空间列表中).

所以我的问题是,是否有一种让CPAN了解这些运行时创建的包的首选方法.以下是我目前正在考虑的选项:

  • 手动搜索所有包并pm为CPAN 创建一个虚拟文件以进行索引.
  • 手动搜索然后更新Build.PL以将其包含在provides列表中.
  • 在元编程例程中添加一些代码以跟踪使用的包,并添加一个钩子build dist以更新provides或其他部分META.yaml

最后一个选项目前是我倾向于的.我想知道这种方法是否有任何问题,或者是否有更好的方法可以使用完整的软件包列表更新CPAN.

squ*_*eks 4

如果我没理解错的话,这不是问题,只要你不破坏其他命名空间。没有先决条件来声明创建的每个名称空间,只需声明发行版的基本名称空间以及与发行版关联的文件即可。如果您想“保留”某些命名空间,而不是创建空白 .pm 文件,请查看创建 .pod 文件和文档。