ExtUtils::Manifest - 編寫和檢查 MANIFEST 檔案的公用程式
版本 1.73
use ExtUtils::Manifest qw(...funcs to import...);
mkmanifest();
my @missing_files = manicheck;
my @skipped = skipcheck;
my @extra_files = filecheck;
my($missing, $extra) = fullcheck;
my $found = manifind();
my $manifest = maniread();
manicopy($read,$target);
maniadd({$file => $comment, ...});
...
ExtUtils::Manifest 預設不匯出任何函式。以下函式可應要求匯出
mkmanifest();
將目前目錄及其子目錄中的所有檔案寫入您的 MANIFEST。其作用方式類似於 Unix 指令的結果
find . > MANIFEST
如果任何檔案符合檔案 MANIFEST.SKIP (如果存在) 中的任何正規表示式,則會略過該檔案。
任何現有的 MANIFEST 檔案都將儲存為 MANIFEST.bak。
my $found = manifind();
傳回雜湊參考。雜湊的鍵是當前目錄下找到的檔案。
my @missing_files = manicheck();
檢查當前目錄中的 MANIFEST
內的所有檔案是否真的存在。如果 MANIFEST
和當前目錄下的樹狀結構同步,它會靜默傳回一個空清單。否則,它會傳回一個清單,其中列出 MANIFEST
中列出但目錄中遺失的檔案,並且預設也會將這些名稱輸出到 STDERR。
my @extra_files = filecheck();
在當前目錄下尋找未在 MANIFEST
檔案中提及的檔案。會參考一個選用的檔案 MANIFEST.SKIP
。任何符合此檔案中正規表示式的檔案都不會報告為 MANIFEST
檔案中遺失。會傳回找到的任何多餘檔案的清單,並且預設也會報告到 STDERR。
my($missing, $extra) = fullcheck();
同時執行 manicheck() 和 filecheck(),然後將它們傳回為兩個陣列參考。
my @skipped = skipcheck();
列出所有因 MANIFEST.SKIP
檔案而略過的檔案。
my $manifest = maniread();
my $manifest = maniread($manifest_file);
讀取一個指定的 MANIFEST
檔案(預設為當前目錄中的 MANIFEST
),並傳回一個雜湊參考,其中檔案為鍵,而註解為雜湊的值。MANIFEST
檔案中空白行和以 #
開頭的行會被捨棄。
my $skipchk = maniskip();
my $skipchk = maniskip($manifest_skip_file);
if ($skipchk->($file)) { .. }
讀取一個指定的 MANIFEST.SKIP
檔案(預設為當前目錄中的 MANIFEST.SKIP
),並傳回一個程式碼參考,用於測試是否應略過給定的檔案名稱。
manicopy(\%src, $dest_dir);
manicopy(\%src, $dest_dir, $how);
將 %src 中的鍵檔案複製到 $dest_dir。%src 通常由 maniread() 函式傳回。
manicopy( maniread(), $dest_dir );
此函式可用於產生與預期的發行樹狀結構相同的目錄樹狀結構。
$how 可用於指定不同的「複製」方法。有效值為 cp
(實際複製檔案)、ln
(建立硬連結)和 best
(大多數會連結檔案,但會複製任何符號連結以建立沒有任何符號連結的樹狀結構)。預設為 cp
。
maniadd({ $file => $comment, ...});
將一個項目新增到現有的 MANIFEST,除非它已經存在。
$file 會被正規化(即 Unix 化)。尚未實作
發行版中的檔案清單,每行一個檔案。MANIFEST 總是使用 Unix 檔案路徑慣例,即使您不在 Unix 上。這表示使用 foo/bar 風格,而不是 foo\bar。
MANIFEST
檔案中空白和行尾之間的任何內容都視為註解。任何以 # 開頭的行也是註解。從 ExtUtils::Manifest 1.52 開始,如果檔案名稱用單引號括起來,則可以包含空白字元;該檔案名稱中的單引號或反斜線必須用反斜線跳脫。
# this a comment
some/file
some/other/file comment about some/file
'some/third file' comment
MANIFEST.SKIP 檔案可能包含 mkmanifest() 和 filecheck() 應忽略的檔案的正規表示式。正規表示式應每一行出現一次。空白行和以 #
開頭的行會被略過。如果您需要正規表示式以 #
開頭,請使用 \#
。
例如
# Version control files and dirs.
\bRCS\b
\bCVS\b
,v$
\B\.svn\b
# Makemaker generated files and dirs.
^MANIFEST\.
^Makefile$
^blib/
^MakeMaker-\d
# Temp, old and emacs backup files.
~$
\.old$
^#.*#$
^\.#
如果找不到 MANIFEST.SKIP 檔案,將會使用一組預設的跳過項目,類似於上述範例。如果您不想跳過任何項目,只需建立一個空的 MANIFEST.SKIP 檔案即可。
在自己的 MANIFEST.SKIP 檔案中,可以使用特定指令來包含其他 MANIFEST.SKIP 檔案的內容。目前已識別出兩個此類指令。
這會插入預設 MANIFEST.SKIP 檔案的內容
這會插入指定的外部檔案的內容
包含的內容將會插入到 MANIFEST.SKIP 檔案中,介於 #!start included /path/to/manifest.skip 和 #!end included /path/to/manifest.skip 標記之間。原始的 MANIFEST.SKIP 會儲存為 MANIFEST.SKIP.bak。
&mkmanifest
、&manicheck
、&filecheck
、&fullcheck
、&maniread
和 &manicopy
是可匯出的。
$ExtUtils::Manifest::MANIFEST
預設為 MANIFEST
。變更它會產生不同的 MANIFEST
和不同的 MANIFEST.SKIP
檔案。如果您想為不同的受眾維護不同的發行版本(例如使用者版本和包含 RCS 的開發人員版本),這會很有用。
$ExtUtils::Manifest::Quiet
預設為 0。如果設定為 true 值,所有函式都會靜默執行。
$ExtUtils::Manifest::Debug
預設為 0。如果設定為 true 值,或如果 PERL_MM_MANIFEST_DEBUG 為 true,將會產生偵錯輸出。
所有診斷輸出都會傳送到 STDERR
。
不在 MANIFEST 中:
檔案如果找到不在 MANIFEST
中的檔案,將會回報此訊息。
跳過
檔案如果由於 MANIFEST.SKIP
中的項目而跳過檔案,將會回報此訊息。
找不到此檔案:
檔案如果 MANIFEST
檔案中提到的檔案不存在,將會回報此訊息。
MANIFEST:
$!如果無法開啟 MANIFEST
,則會回報。
已新增至 MANIFEST:
檔案如果設定 $Verbose,且有檔案新增至 MANIFEST,則會由 mkmanifest() 回報。預設會將 $Verbose 設定為 1。
開啟偵錯
ExtUtils::MakeMaker,其中包含大部分功能的便利目標。
Andreas Koenig andreas.koenig@anima.de
目前由 Perl Toolchain Gang 維護。
此軟體的著作權為 (c) 1996- Andreas Koenig 所有。
這是自由軟體;您可以在與 Perl 5 程式語言系統相同的條款下重新散布或修改它。