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
,表示沒有任何偏好設定檔案等著被尋找
find()
讀取設定檔時會傳回 CPAN::Distroprefs::Result 物件,以表示成功或失敗。
所有結果都共用一些屬性
success
、warning
或 fatal
讀取這些設定檔的檔案,或此錯誤所指的檔案(相對檔案名稱)
檔案的副檔名,用於決定如何載入
讀取檔案的目錄
檔案的絕對路徑
錯誤結果(警告和致命錯誤)包含
錯誤訊息(通常是 $!
或 YAML 錯誤)
成功結果包含
CPAN::Distroprefs::Pref 物件的陣列參考
CPAN::Distroprefs::Pref 物件代表個別的 distroprefs 文件。它們會自動建構為 find()
的 success
結果的一部分。
設定檔資訊,以雜湊參考表示,適合傳遞給 Kwalify 等
傳回有效配對屬性的清單(請參閱 CPAN 中的 Distroprefs 區段)
目前:env perl perlconfig distribution module
如果此設定檔有任何「配對」屬性,則為 true
如果此設定檔有「配對」屬性,且至少有一個有效的配對屬性,則為 true
if ($pref->matches(\%arg)) { ... }
如果此設定檔與傳入的雜湊參考相符,則為 true,而雜湊參考必須為每個 match_attributes
(如上)提供一個值
此程式是自由軟體;您可以在與 Perl 相同的條款下重新散布或修改它。