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
)并返回一个 HASH 引用,其中文件为键,注释为 HASH 的值。MANIFEST
文件中的空行和以 #
开头的行将被丢弃。
my $skipchk = maniskip();
my $skipchk = maniskip($manifest_skip_file);
if ($skipchk->($file)) { .. }
读取一个命名的 MANIFEST.SKIP
文件(默认为当前目录中的 MANIFEST.SKIP
)并返回一个 CODE 引用,用于测试是否应跳过给定的文件名。
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 文件的内容
这会插入指定外部文件的内容
包含的内容将插入到 #!start included /path/to/manifest.skip 和 #!end included /path/to/manifest.skip 标记之间的 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 [email protected]
目前由 Perl 工具链团队维护。
此软件的版权所有者为 Andreas Koenig (c) 1996-。
这是一款免费软件;你可以根据 Perl 5 编程语言系统本身的条款重新分发和/或修改它。