我试图更好地理解我可以使用 什么,并在 key规范CPAN::Meta::Spec
中遇到以下句子:file
[...]到包含或生成包的文件。它可以作为 META.yml 或 META.json 给出,以声明用于索引的包,而不需要 *.pm。
这句话对我来说就像一个能够META.*
使用文件路径而不是*.pm
. 因此,使用it
, 这显然与前面提到的路径相关联。很像下面的例子:
provides => {
'Foo::Bar' => {
file => 'lib/Foo/Bar.pm',
version => '0.27_02'
},
'Foo::Bar2' => {
file => 'lib/Foo/Bar2.yml', <-- META.yml?
},
'Foo::Bar3' => {
file => 'lib/Foo/Bar3.json', <-- META.json?
version => '0.3'
}
因此,虽然Foo/Bar2.pm
和Foo/Bar3.pm
可能存在于发行版中,但它们没有显式定义,而是隐式使用META.*
文件。
这样的
META.*
外观如何,它包含什么?name
只有和之类的东西version
,这也是原生 Perl 包可能提供的东西?license
或者像and之类的其他东西keyword
,也许除了依赖关系之外的所有东西?CPAN 客户如何处理这种情况?
META.*
显然不是 Perl 包本身,我看不出它是如何用来生成它的。那么最终实际安装在系统中的是什么?是否有一些额外的机制以某种方式生成包?如何提供
META.*
而不是*.pm
兼容密钥version
和以下限制:
[...]如果包没有 $VERSION,则必须省略此字段。
在这种情况下是否META.*
算作一个包含的包裹$VERSION
?或者是否期望最终以某种方式生成包并且必须也具有$VERSION
并且只要不生成包,META.*
就可以简单地使用的版本?
感谢您的澄清!