目錄

名稱

Config::Perl::V - Perl -V 輸出的結構化資料擷取

語法

use Config::Perl::V;

my $local_config = Config::Perl::V::myconfig ();
print $local_config->{config}{osname};

說明

$conf = myconfig ()

此函數將收集下文「雜湊結構」中所述的資料,並以雜湊參照傳回。它可以選擇接受一個選項,以從 %ENV 中納入更多項目。請參閱下文的「環境」。

請注意,當使用 -I/path/to/uninstalled/perl/lib 呼叫時,這在未安裝的 Perl 上不起作用,但當該路徑位於 $PERL5LIB$PERL5OPT 中時,它會起作用,因為使用 -I 傳遞的路徑在收集 -V 資訊時並不知道。

$conf = plv2hash ($text [, ...])

將單一的「perl -V」文字區塊或行清單轉換為完整的 myconfig 雜湊。所有未知項目都設為預設值。

$info = summary ([$conf])

傳回任意選取的資訊。如果未提供 $conf,則改用 myconfig ()

$md5 = signature ([$conf])

傳回由 summary () 傳回的資訊的 MD5,不含 config_args 項目。

如果沒有 Digest::MD5,會傳回只含 0 的字串。

雜湊結構

傳回的雜湊包含 4 個部分

建置

此資訊從 perl -V 發出的第二個區塊中擷取,通常看起來像

 Characteristics of this binary (from libperl):
   Compile-time options: DEBUGGING USE_64_BIT_INT USE_LARGE_FILES
   Locally applied patches:
	 defined-or
	 MAINT24637
   Built under linux
   Compiled at Jun 13 2005 10:44:20
   @INC:
     /usr/lib/perl5/5.8.7/i686-linux-64int
     /usr/lib/perl5/5.8.7
     /usr/lib/perl5/site_perl/5.8.7/i686-linux-64int
     /usr/lib/perl5/site_perl/5.8.7
     /usr/lib/perl5/site_perl
     .

 Characteristics of this binary (from libperl):
   Compile-time options: DEBUGGING MULTIPLICITY
			 PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
			 PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL
			 PERL_USE_SAFE_PUTENV USE_ITHREADS
			 USE_LARGE_FILES USE_PERLIO
			 USE_REENTRANT_API
   Built under linux
   Compiled at Jan 28 2009 15:26:59

此資訊在其他任何地方都不可用,包括 %Config,但這是只有 perl 二進位檔才知道的資訊。

擷取的資訊儲存在 build 雜湊中的 5 個項目中

作業系統名稱

這很可能是與 $Config{osname} 相同,並且是 perl 建置時已知的名稱。如果 perl 是跨編譯的,則可能不同。

如果無法擷取此欄位的預設值,則複製 $Config{osname}。兩者在大小寫上可能不同(OpenBSD 與 openbsd)。

時間戳記

這是編譯 perl 二進位檔的時間字串。預設值為 0。

選項

這是雜湊,其中所有已知的定義為鍵。值為 0(表示未知或未設定)或 1(表示已定義)。

衍生

由於某些變數在 perl -V 的輸出中以不同名稱報告,而不是它們在 %Config 中的實際名稱,因此我決定讓 config 項目盡可能接近實際情況,並將可能已猜測的項目放入單獨的區塊中列印輸出。

修補程式

這是清單,其中包含選擇性地套用的本地修補程式。預設值為空清單。

環境

預設情況下,此雜湊只填入從 %ENV 中開頭為 PERL 的環境變數,但您可以傳遞 env 選項給 myconfig 以取得更多內容

my $conf = Config::Perl::V::myconfig ({ env => qr/^ORACLE/ });
my $conf = Config::Perl::V::myconfig ([ env => qr/^ORACLE/ ]);
組態

此雜湊填入 perl -V 填入其報告的變數,並且它具有 Config::myconfig%Config 傳回的相同變數。

包含

這是 @INC 的預設清單。

推理

撰寫此模組的目的是為了能夠傳回目前使用的 Perl 的組態,深度符合 CPANTESTERS 架構的需要。到目前為止,他們將 myconfig 的輸出用作單一文字區塊,因此遺漏了執行中 Perl 和套用選用修補程式的基本二進制特徵。

錯誤

請回饋錯誤事項

待辦事項

* Implement retrieval functions/methods
* Documentation
* Error checking
* Tests

作者

H.Merijn Brand <h.m.brand@xs4all.nl>

著作權和授權

著作權所有 (C) 2009-2023 H.Merijn Brand

此函式庫為自由軟體;您可以在與 Perl 相同的條款下重新散布或修改它。