CPAN::Distroprefs -- 读取和匹配 distroprefs
use CPAN::Distroprefs;
my %info = (... distribution/environment info ...);
my $finder = CPAN::Distroprefs->find($prefs_dir, \%ext_map);
while (my $result = $finder->next) {
die $result->as_string if $result->is_fatal;
warn($result->as_string), next if $result->is_warning;
for my $pref (@{ $result->prefs }) {
if ($pref->matches(\%info)) {
return $pref;
}
}
}
此模块封装了读取 Distroprefs 并将其与 CPAN 发行版进行匹配的操作。
my $finder = CPAN::Distroprefs->find($dir, \%ext_map);
while (my $result = $finder->next) { ... }
构建一个迭代器,该迭代器在给定目录下的树中查找 distroprefs 文件。在树中,匹配 m/^[._]/
的目录将被修剪。
%ext_map
是一个哈希引用,其键是文件扩展名,其值是用于加载匹配文件的模块。
{
'yml' => 'YAML::Syck',
'dd' => 'Data::Dumper',
...
}
每次调用 $finder->next
时,迭代器将返回以下两种可能的值之一:
一个 CPAN::Distroprefs::Result 对象
undef
,表示没有剩余的 prefs 文件要查找。
find()
返回 CPAN::Distroprefs::Result 对象,以指示读取 prefs 文件时成功或失败。
所有结果都共享一些通用属性。
success
、warning
或 fatal
从中读取这些首选项的文件,或指代此错误的文件(相对文件名)。
文件的扩展名,它决定如何加载文件
文件读取的目录
文件的绝对路径
错误结果(警告和致命)包含
错误消息(通常是$!
或 YAML 错误)
成功结果包含
一个包含 CPAN::Distroprefs::Pref 对象的数组引用
CPAN::Distroprefs::Pref 对象代表单个 distroprefs 文档。它们在 find()
的 success
结果中自动构建。
首选项信息作为哈希引用,适合例如传递给 Kwalify
返回有效匹配属性的列表(参见 CPAN 中的 Distroprefs 部分)
目前:env perl perlconfig distribution module
如果此首选项有任何 'match' 属性,则为 true
如果此首选项具有 'match' 属性并且至少有一个有效的匹配属性,则为 true
if ($pref->matches(\%arg)) { ... }
如果此首选项与传入的哈希引用匹配,则为 true,该哈希引用必须对每个 match_attributes
(如上)都有一个值
本程序是自由软件;您可以根据与 Perl 本身相同的条款重新发布和/或修改它。