CPAN::Meta::Prereqs - 依據階段和類型區分的一組套件先決條件
版本 2.150010
一個 CPAN::Meta::Prereqs 物件代表一個 CPAN 套件或其選用功能的先決條件。每組先決條件會依據階段和類型進行整理,如 CPAN::Meta::Prereqs 所述。
my $prereq = CPAN::Meta::Prereqs->new( \%prereq_spec );
此方法會傳回一組新的先決條件。輸入應類似於 CPAN::Meta::Spec 中所述的 prereqs
欄位內容,大致如下
my $prereq = CPAN::Meta::Prereqs->new({
runtime => {
requires => {
'Some::Module' => '1.234',
...,
},
...,
},
...,
});
您也可以使用以下方式建構一個空的先決條件集合:
my $prereqs = CPAN::Meta::Prereqs->new;
這個空的先決條件集合對於在最終將整個集合傾倒到結構或字串中之前累積新的先決條件很有用。
my $requirements = $prereqs->requirements_for( $phase, $type );
此方法會傳回給定階段/類型組合的 CPAN::Meta::Requirements 物件。如果沒有為該組合註冊任何先決條件,將會傳回新的 CPAN::Meta::Requirements 物件,並且可以視需要新增到其中。
如果 $phase
或 $type
未定義或無效,將會引發例外狀況。
my @phases = $prereqs->phases;
此方法會傳回先決條件物件中目前已填入的所有階段清單,適合用於反覆處理。
my @runtime_types = $prereqs->types_in('runtime');
此方法會傳回先決條件物件中目前已填入的所有類型清單,適合用於反覆處理。
my $new_prereqs = $prereqs->with_merged_prereqs( $other_prereqs );
my $new_prereqs = $prereqs->with_merged_prereqs( \@other_prereqs );
此方法會傳回新的 CPAN::Meta::Prereqs 物件,其中所有其他提供的先決條件都已合併到目前的集合中。這主要是為了將發行版的核心先決條件與其其中一個選用功能的先決條件合併。
新的先決條件物件與原始物件沒有關聯,進一步修改它也不會修改原始物件。
my $new_reqs = $prereqs->merged_requirements( \@phases, \@types );
my $new_reqs = $prereqs->merged_requirements( \@phases );
my $new_reqs = $prereqs->merged_requirements();
此方法會將跨越多個階段和類型的所有需求合併到新的 CPAN::Meta::Requirements 物件中。如果省略引數,它預設會使用「runtime」、「build」和「test」作為階段,以及「requires」和「recommends」作為類型。
此方法會傳回一個雜湊參考,其中包含適合傾倒到 distmeta 資料結構的結構。它僅由雜湊和字串組成;裡面不會有 Prereqs、CPAN::Meta::Requirements 或 version
物件。
如果先決條件集合已標記為「已完成」,且無法修改,此方法會傳回 true。
對 Prereqs 物件呼叫 finalize
會關閉它以進行進一步修改。嘗試進行任何實際上會修改先決條件的變更,將會導致引發例外狀況。
my $cloned_prereqs = $prereqs->clone;
此方法傳回一個 Prereqs 物件,它與原始物件相同,但可以變更而不影響原始物件。最後處理不會在複製後保留,表示您可以複製一組最後處理的先決條件,然後修改複製的內容。
請使用 CPAN 要求追蹤器回報任何錯誤或功能。錯誤可以透過網路介面提交至 http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Meta
在提交錯誤或要求時,請包含測試檔案或現有測試檔案的修補程式,以說明錯誤或所需功能。
David Golden <dagolden@cpan.org>
Ricardo Signes <rjbs@cpan.org>
Adam Kennedy <adamk@cpan.org>
此軟體的版權為 David Golden、Ricardo Signes、Adam Kennedy 和貢獻者所有 (c) 2010。
這是免費軟體;您可以在與 Perl 5 程式語言系統相同的條款下重新散布或修改它。