内容

名称

Pod::Escapes - 用于解析 Pod E<...> 序列

概要

use Pod::Escapes qw(e2char);
...la la la, parsing POD, la la la...
$text = e2char($e_node->label);
unless(defined $text) {
  print "Unknown E sequence \"", $e_node->label, "\"!";
}
...else print/interpolate $text...

描述

此模块提供了解码 Pod E<...> 序列的有用功能。 据推测,它应该只被 Pod 解析器和/或格式化程序使用。

默认情况下,Pod::Escapes 不导出任何符号。 但您可以请求导出任何符号。 可以单独请求它们,例如 use Pod::Escapes qw(symbolname symbolname2...);,或者您可以使用 use Pod::Escapes qw(:ALL); 来获取所有可导出符号。

优点

e2char($e_content)

给定一个可能出现在 E<name_or_num> 序列中的名称或数字,此函数返回它所代表的字符串。例如,e2char('sol')e2char('47')e2char('0x2F')e2char('057') 都返回 "/",因为 E<sol>E<47>E<0x2f>E<057> 都表示 "/"。如果该名称没有已知的值(例如名称为 "qacute")或语法无效(例如名称为 "1/4"),则返回 undef。

e2charnum($e_content)

给定一个可能出现在 E<name_or_num> 序列中的名称或数字,此函数返回它所代表的 Unicode 字符的数字。例如,e2char('sol')e2char('47')e2char('0x2F')e2char('057') 都返回 47,因为 E<sol>E<47>E<0x2f>E<057> 都表示 "/",其 Unicode 数字为 47。如果该名称没有已知的值(例如名称为 "qacute")或语法无效(例如名称为 "1/4"),则返回 undef。

$Name2character{name}

从名称(如 E<name>)映射到它们所代表的字符串,例如 "eacute" 或 "sol"。请注意,这并不包括数字(如 "64" 或 "x981c")。在旧版本的 Perl(5.7 之前)中,对于 Unicode 值超过 255 的字符,您将获得一个 "?"。

$Name2character_number{name}

从名称(如 E<name>)映射到它们所代表的 Unicode 值,例如 "eacute" 或 "sol"。例如,$Name2character_number{'eacute'} 为 201,$Name2character_number{'eacute'} 为 8364。无论您使用的是哪个版本的 Perl,您都会获得正确的 Unicode 值,这与 %Name2character 在 5.7 之前的 Perl 版本中的行为不同。

请注意,此哈希不包括数字(如 "64" 或 "x981c")。

$Latin1Code_to_fallback{integer}

对于 160 (0x00A0) 到 255 (0x00FF) 范围内的数字,此哈希从 Latin-1 字符的字符代码(如 233 代表小写 e-acute)映射到最接近它的 US-ASCII 字符(如 "e")。如果您在仅处理 US-ASCII 字符的格式中渲染 POD,您可能会发现此哈希很有用。

$Latin1Char_to_fallback{character}

与上面一样,但从字符(如 "\xE9",小写 e-acute)映射到字符(如 "e")。

$Code2USASCII{integer}

此哈希从 US-ASCII 代码(如 32)映射到相应的字符(如 32 代表空格)。仅定义了 32 到 126 的字符。这旨在供 e2char($x) 在它检测到它运行在非 ASCII 平台上时使用(在这种平台上,chr(32) 不会得到空格,但 $Code2USASCII{32} 会得到)。这里记录它只是为了您可能发现它有用。

注意事项

在 Perl 5.7 之前的版本中,Unicode 字符的值超过 255(例如 lambda 或 emdash)无法传递。此模块在这些早期 Perl 版本下仍然可以工作,但每个这样的字符都会被替换为“?”。Latin-1 字符(字符 160-255)不受影响。

在 EBCDIC 平台下,e2char($n) 可能并不总是与 chr(e2charnum($n)) 相同,$Name2character{$name}chr($Name2character_number{$name}) 也是如此,因为字符串以本机形式返回,而数字以 Unicode 形式返回。但是,对于从 v5.8 开始的 Perl 版本,e2char($n)chr(utf8::unicode_to_native(e2charnum($n))) 相同,$Name2character{$name}chr(utf8::unicode_to_native($Name2character_number{$name})) 也是如此。

另请参阅

Pod::Browser - 基于 Catalyst 的 pod 网页服务器。

Pod::Checker - 检查 pod 文档是否存在语法错误。

Pod::Coverage - 检查模块的文档是否全面。

perlpod - pod 格式的描述(适用于使用 pod 进行文档编制的人员)。

perlpodspec - pod 格式的规范(适用于处理 pod 格式的人员)。

Text::Unidecode - Unicode 文本的 ASCII 转写。

代码库

https://github.com/neilbowers/Pod-Escapes

版权和免责声明

版权所有 (c) 2001-2004 Sean M. Burke。保留所有权利。

此库是自由软件;您可以根据与 Perl 本身相同的条款重新分发和/或修改它。

此程序按“现状”提供,不提供任何形式的明示或暗示的担保,包括但不限于适销性和特定用途适用性的暗示担保。

此模块中部分数据表源自 W3C XHTML 规范中的实体声明。

目前(2001 年 10 月),这三个是

http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent

作者

Sean M. Burke [email protected]

现在由 Neil Bowers <[email protected]> 维护。