内容

名称

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/ ]);
config

此哈希填充了 perl -V 填充其报告的变量,并且具有 Config::myconfig%Config 返回的相同变量。

inc

这是默认 @INC 的列表。

REASONING

编写此模块是为了能够根据 CPANTESTERS 框架的需要深度返回当前使用的 perl 的配置。到目前为止,他们将 myconfig 的输出用作单个文本 blob,因此它缺少运行 perl 的重要二进制特性和应用的可选补丁。

BUGS

请反馈有什么问题

TODO

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

AUTHOR

H.Merijn Brand <[email protected]>

COPYRIGHT AND LICENSE

版权所有 (C) 2009-2023 H.Merijn Brand

此库是免费软件;你可以根据与 Perl 自身相同的条款重新分发或修改它。