ExtUtils::Installed - 已安裝模組的清單管理
use ExtUtils::Installed;
my ($inst) = ExtUtils::Installed->new( skip_cwd => 1 );
my (@modules) = $inst->modules();
my (@missing) = $inst->validate("DBI");
my $all_files = $inst->files("DBI");
my $files_below_usr_local = $inst->files("DBI", "all", "/usr/local");
my $all_dirs = $inst->directories("DBI");
my $dirs_below_usr_local = $inst->directory_tree("DBI", "prog");
my $packlist = $inst->packlist("DBI");
ExtUtils::Installed 提供一個標準的方式來找出已安裝的核心和模組檔案。它使用安裝過程中建立的 .packlist 檔案中儲存的資訊來提供這些資訊。此外,它還提供分類已安裝檔案和從 .packlist 檔案中提取目錄資訊的功能。
new() 函數會搜尋系統上所有已安裝的 .packlists,並儲存其內容。.packlists 可使用以下說明的功能查詢。其預設搜尋位置由 %Config::Config
中的設定值以及 PERL5LIB 環境變數的值決定。
除非另有說明,否則所有方法都可以作為類別方法或物件方法呼叫。如果呼叫為類別方法,則會使用「預設」物件,必要時會使用目前的處理程序 %Config 和 @INC 來建立。有關詳細資訊,請參閱 new() 中的「預設」選項。
這會採用選擇性的命名參數。若無參數,這會使用來自 %Config::Config
和預設模組搜尋路徑 @INC
的資訊,搜尋系統上所有已安裝的 .packlists。packlists 會使用 ExtUtils::Packlist 模組來讀取。
如果命名參數 skip_cwd
為 true,在搜尋 .packlists 之前,目前的目錄 .
會從 @INC
中移除。這可以防止 ExtUtils::Installed 找到安裝在其他 Perl 中的模組,而這些 Perl 恰好位於目前的目錄下方。
如果指定了命名參數 config_override
,它應該是對雜湊的參考,其中包含通常在 %Config::Config
中找到的所有資訊。例如,您可以取得個別 Perl 安裝的組態資訊並傳遞進去。
my $yoda_cfg = get_fake_config('yoda');
my $yoda_inst =
ExtUtils::Installed->new(config_override=>$yoda_cfg);
類似地,參數 inc_override
可以是對陣列的參考,用於取代來自 @INC
的預設模組搜尋路徑。
use Config;
my @dirs = split(/\Q$Config{path_sep}\E/, $ENV{PERL5LIB});
my $p5libs = ExtUtils::Installed->new(inc_override=>\@dirs);
注意:您可能不想要單獨使用這些選項,幾乎在所有情況下,您都會想要同時設定兩個選項。
參數 extra_libs
可用於指定用於搜尋已安裝模組的其他路徑。例如
my $installed =
ExtUtils::Installed->new(extra_libs=>["/my/lib/path"]);
這只在 /my/lib/path 不在 PERL5LIB 中時才需要。
最後是「預設」選項,以及相關的「預設取得」和「預設設定」選項。這些選項控制由類別介面提供給方法的「預設」物件。將 default_get
設定為 true 會指示建構函數在定義預設物件時傳回該物件。將 default_set
設定為 true 會指示建構函數將預設物件設為已建構的物件。設定 default
選項就像同時將兩個選項都設定為 true。這主要在內部使用,對任何實際使用者而言可能都不感興趣。
這會傳回所有已安裝模組名稱的清單。perl「核心」會給予特殊名稱「Perl」。
這需要一個強制參數,也就是模組名稱。它會傳回來自套件的所有檔案名稱清單。若要取得核心 perl 檔案清單,請使用模組名稱「Perl」。允許多個其他參數。第一個參數是字串「prog」、「doc」或「all」之一,用於選取僅程式檔案、僅手冊檔案或所有檔案。其餘參數是目錄清單。傳回的檔案名稱將限制為在指定目錄下的檔案。
這需要一個強制參數,模組名稱。它會傳回套件中所有目錄的清單。允許其他參數。第一個是字串「prog」、「doc」或「all」之一,用於選取僅程式目錄、僅手冊目錄或所有目錄。其餘參數是目錄清單。傳回的目錄將限制在指定目錄下的目錄。此方法僅傳回包含指定模組檔案的葉目錄。
這與 directories() 的運作方式相同,但它包含所有中間目錄,直到指定目錄。
這需要一個強制參數,模組名稱。它會檢查模組 .packlist 中列出的所有檔案是否實際存在,並傳回任何遺失檔案的清單。如果給定評估為 true 的第二個選用引數,任何遺失的檔案將從 .packlist 中移除
這會傳回指定模組的 ExtUtils::Packlist 物件。
這會傳回指定模組的版本號碼。
請參閱 ExtUtils::Packlist 中的範例。
Alan Burlison <Alan.Burlison@uk.sun.com>