内容

名称

perl589delta - perl v5.8.9 的新增内容

描述

本文档描述了 5.8.8 版本和 5.8.9 版本之间的差异。

注意

5.8.9 版本将是 5.8.x 系列的最后一个重要版本。5.8.x 的任何未来版本可能只会用于处理安全问题和平台构建失败。因此,如果您还没有开始,您应该考虑迁移到 5.10.x。有关更多信息,请参阅 "已知问题"

不兼容的更改

用 C++ 编写的扩展的源代码中的一种特定构造可能需要更改。有关更多详细信息,请参阅 "更改的内部"。所有用 C 编写的扩展、大多数用 C++ 编写的扩展以及所有现有的已编译扩展都不会受到影响。这是为了改进 C++ 支持而必需的。

除此之外,没有有意与 5.8.8 不兼容的更改。如果存在任何不兼容的更改,它们都是错误,欢迎报告。

核心增强功能

Unicode 字符数据库 5.1.0。

Perl 5.8 中包含的 Unicode 字符数据库副本已从 4.1.0 更新到 5.1.0。有关重大更改,请参阅 http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges

目录句柄上的 stat 和 -X

现在可以对目录句柄调用stat-X filestat 运算符。由于目录句柄和文件句柄都是裸字,因此可能会出现歧义,无法确定要使用哪个。在这些情况下,优先使用文件句柄语义。两者都将*FILE{IO} 文件句柄视为*FILE 文件句柄。

@INC 中的源代码过滤器

可以通过在钩子打开并返回的文件句柄之上添加源代码过滤器来增强 @INC 中子例程钩子的机制。此功能计划已久,但直到现在才开始运作。有关详细信息,请参阅 "require" in perlfunc。(Nicholas Clark)

常量折叠中的异常

常量折叠例程现在被包装在一个异常处理程序中,如果折叠抛出异常(例如尝试计算 0/0),perl 现在会保留当前的 optree,而不是中止整个程序。如果没有此更改,如果程序包含可能在运行时永远无法到达的代码中的表达式,即使这些表达式恰好会生成异常,程序也无法编译。(Nicholas Clark,Dave Mitchell)

no VERSION

现在可以使用 no 后跟版本号来指定要使用比指定版本更旧的 perl 版本。

改进的内部 UTF-8 缓存代码

用于缓存字符串中字符偏移量的计算 UTF-8 字节偏移量的代码已重写。已找到并消除了一些错误,并且代码现在更好地利用了它拥有的信息,因此应该更快。特别是,它不会在计算字符串内的偏移量之前扫描到字符串的末尾,这应该会加快对长字符串的一些操作。现在可以在运行时禁用缓存代码,以验证它是否不是疑似问题的原因。

运行时可重定位安装

现在有Configure支持创建在运行时可重定位的 perl 树。请参阅 "Relocatable installations"

新的内部变量

${^CHILD_ERROR_NATIVE}

此变量给出由最后一个管道关闭、反引号命令、对 waitwaitpid 的成功调用或 system 运算符返回的本地状态。有关详细信息,请参阅 perlvar。(由 Gisle Aas 贡献。)

${^UTF8CACHE}

此变量控制内部 UTF-8 偏移缓存代码的状态。1 表示开启(默认值),0 表示关闭,-1 表示通过将所有结果与线性扫描进行比较来调试缓存代码,并在出现任何差异时引发恐慌。

readpipe 现在可以被覆盖

内置函数 readpipe 现在可以被覆盖。覆盖它也允许覆盖其运算符对应项 qx//(也称为 ``)。

简单的异常处理宏

Perl 5.8.9(以及 5.10.0 及更高版本)现在提供了一些宏来在 XS 模块中进行非常基本的异常处理。如果您调用可能 croak 的代码,但需要在将控制权交回 Perl 之前进行一些清理,则可以使用这些宏。有关更多详细信息,请参阅 "perlguts 中的异常处理"

-D 选项增强

XS 辅助的 SWASHGET

正则表达式引擎用于检索 Unicode 属性和音译映射的一些纯 Perl 代码已在 XS 中重新实现,以实现更快的执行。(SADAHIRO Tomoyuki)

常量子例程

解释器内部现在支持一种更节省内存的内联常量形式。在符号表中存储对常量值的引用等效于完整的 typeglob 引用常量子例程,但使用大约 400 字节更少的内存。此代理常量子例程会在必要时自动升级为具有子例程的真实 typeglob。所采用的方法类似于现有子例程存根声明的空间优化,这些声明存储为符号表中的普通标量,而不是完整的 typeglob。

但是,为了帮助现有代码的向后兼容性(错误地)不期望符号表中除了 typeglob 之外的任何内容,核心中的任何内容都不会使用此功能,除了回归测试。

从 5.005 版本开始,原型化子例程的存根被存储在符号表中作为纯字符串,而未原型化子例程的存根被存储为数字 -1。因此,假设核心只将类型全局变量放置在符号表中的代码在过去 10 多年里一直做出错误的假设。

新平台

添加了以下平台的编译支持:

模块和语义

新模块

更新的模块

实用程序更改

调试器升级到版本 1.31

perlthanks

Perl 5.8.9 添加了一个新的实用程序 perlthanks,它是 perlbug 的变体,但用于向 Perl 的作者和维护者发送非错误报告。只收到错误报告可能会让人有点沮丧 - 我们看看这是否会改变现状。

perlbug

perlbug 现在会检查你是否报告的是非核心模块,并建议你将其报告给 CPAN 作者。

h2xs

h2ph

新文档

与往常一样,文档收到了其份额的更正、澄清和其他细微修复。添加了更多 标签以进行索引。

perlunitut 是 Juerd Waalboer 编写的关于 Unicode 相关术语以及如何在 Perl 脚本中正确处理 Unicode 的教程。

perlunicode 在用户定义属性部分进行了更新。

perluniintro 在检测特定编码中无效数据的示例中进行了更新。

perlcommunity 提供了 Perl 社区的概述以及更多资源。

CORE 文档记录了 Perl 核心例程的伪命名空间。

现有文档的更改

perlglossary 添加了已弃用模块和功能以及将要删除的模块

perlhack 已更新并添加了有关冒烟测试的资源。

Perl 常见问题解答 (perlfaq1..perlfaq9) 已更新。

perlcheat 更新了有关\w\d\s 的更详细内容。

perldebug 更新了有关如何调用调试器的信息。

perldiag 文档更新了带有与号的子例程作为existsdelete 的参数,以及对警告的几个术语更新。

perlfork 文档记录了伪进程中exec 的限制。

perlfunc:

perllocale 文档已针对数字本地化和POSIX::setlocale 进行调整,以修复 Debian 错误 #379463。

perlmodlib 更新了CPAN::API::HOWTOSys::Syslog::win32::Win32

perlre 文档更新以反映[[:xxxxx:]]\p{IsXxxxx} 匹配之间的差异。还添加了有关/g/c 修饰符的部分。

perlreguts 描述了正则表达式引擎的内部机制。它由 Yves Orton 贡献。

perlrebackslash 描述了所有 Perl 正则表达式反斜杠和转义序列。

perlrecharclass 描述了 Perl 正则表达式中字符类的语法和用法。

perlrun 更新以澄清哈希种子PERL_HASH_SEED。选项-x-u 中也包含更多信息。

perlsub 示例已更新为使用词法变量进行opendir 语法。

perlvar 修正了关于真实 GID $( 和有效 GID $) 的混淆。

Perl 线程教程示例已在"perlthrtut 中的队列:传递数据"perlthrtut 部分修复。

perlhack 文档由 Jarkko Hietaniemi 和其他人进行了大量改进。

perltoot 提供了有关修改@UNIVERSAL::ISA 的信息。

perlport 文档已扩展,包括 Windows 上不同的 kill(-9, ...) 语义。它还明确说明 dump 在 Win32 和 cygwin 上不受支持。

INSTALL 已更新和现代化。

性能增强

安装和配置改进

可重定位安装

现在有Configure 支持创建可重定位的 perl 树。如果你使用 -Duserelocatableinc Configure,那么 @INC 中的路径(以及 %Config 中的任何其他内容)可以选择通过perl 可执行文件的路径来定位。

在启动时,如果 @INCConfig 中的任何路径被Configure 标记为可重定位(通过以 ".../" 开头),那么它们将被 $^X 的目录前缀。这允许在每个目录的基础上配置重定位,尽管使用 -Duserelocatableinc 的默认设置是所有内容都被重定位。初始安装是在原始配置的前缀中完成的。

配置改进

Configure 现在更擅长删除临时文件。Tom Callaway(来自 RedHat)还贡献了补丁,这些补丁完成了传递给编译器和链接器的标志集,特别是 -fPIC 现在在 Linux 上被启用。它还会在你的/dev/null 不是设备时发出警告。

一个新的配置变量 d_pseudofork 已添加到Configure 中,并在 Config 模块中作为 $Config{d_pseudofork} 可用。这区分了真正的 fork 支持和在 Windows 平台上使用的伪 fork 模拟。

Config.podconfig.sh 现在被正确地放置用于交叉编译。

$Config{useshrplib} 现在是 'true' 而不是 'yes',当使用共享 perl 库时。

编译改进

并行 make 现在应该可以正常工作了,尽管如果 make test 被指示并行运行,仍然可能存在问题。

许多编译警告已被清理。S_emulate_eaccess() 中一个非常顽固的编译器警告在六次尝试后被消灭。g++ 支持已经被调整,特别是针对 FreeBSD。

mkppport 已集成,所有核心中的 ppport.h 文件现在将在构建时自动生成(并在清理时删除)。

安装改进。

installman 现在可以使用 -DuserelocatableincDESTDIR

installperl 不再安装

平台特定更改

AIX、Cygwin、DEC/OSF、FreeBSD、HP/UX、Irix 6 Linux、MachTen、NetBSD、OS/390、QNX、SCO、Solaris、SunOS、System V Release 5.x(UnixWare 7、OpenUNIX 8)、Ultrix、UMIPS、uts 和 VOS 的提示已改进。

FreeBSD

Solaris

VMS

Windows

选定的错误修复

Unicode

修复了许多与内部 Unicode 实现 (UTF-8) 相关的错误。特别是,长期存在的与通过 tie 返回 Unicode、重载或 $@ 相关的错误现在已消失,其中一些从未被报告过。

unpack 将在内部将字符串从 UTF-8 转换回数字类型。这是在 5.10 中完全一致性和当前行为之间的一种折衷方案,当前行为通常被用作字符串类型的“特性”。

现在可以使用 :crlfUTF-16 IO 层。

修复了 split、Unicode /\s+// \0/ 的问题。

修复了错误 RT #40641 - 正则表达式中 Unicode 字符的编码。

修复了在正则表达式中使用某些模式会导致 panic 的错误。[RT #45337]

如果区域设置的字符不是 UTF-8,Perl 不会再出现段错误(由于无限的内部递归)。[RT #41442]

use open ':locale';
print STDERR "\x{201e}"; # „

PerlIO

修复了 PerlIO 使用的引用计数不一致性,用于跟踪 Unix 文件描述符,以及 XS 代码用于管理获取和释放 FILE * 的 API。

Magic

修复了 Magic 中的几个错误,Magic 是用于实现 tie、污染和线程共享等功能的内部系统。

undef @array 在绑定数组上现在会正确调用 CLEAR 方法。

一些按位运算符在使用它们之前没有检查它们的论据是否具有魔术。[RT #24816]

表达式 \&$x 不会再两次调用 Magic。

已解决分配大数字和污染的错误。[RT #40708]

在 MAGIC vtable 中添加了一个新条目 - svt_local。这在 local 期间将魔术复制到新值时使用,允许解决与本地化共享变量相关的一些问题。

有关实现细节,请参阅 "perlguts 中的魔术虚拟表"

重新祝福重载对象现在可以工作

在 Perl 内部,对象的本质在于被引用者,而不是引用本身,即使方法只能通过引用调用。然而,最初的重载实现将与重载相关的标志存储在引用上,依赖于在复制引用时复制标志,或在创建新引用时设置标志。这会导致一个错误——如果你将一个来自具有重载的类的对象重新祝福到一个没有重载的类,那么任何其他现有的引用都会认为它们(仍然)指向一个重载对象,选择这些 C 代码路径,然后抛出错误。类似地,在其他引用存在的情况下,祝福到一个重载类会导致它们不使用重载。

该实现已在 5.10 中修复,但此修复更改了标志位的语义,因此不兼容二进制,因此不能应用于 5.8.9。但是,5.8.9 有一个解决方法,实现了相同的错误修复。如果被引用者有多个引用,则会找到并更正所有其他引用。通过从当前子例程和参数栈向外扫描词法变量,尽可能避免完全搜索。

一个著名的 Linux 供应商在其 /usr/bin/perl 中应用了此错误修复的不完整版本,然后在未咨询上游的情况下过早地关闭了有关性能问题的错误报告。这还不够,他们随后继续忽略对这些未发布更改的必要修复长达 11 个月,直到他们饱受折磨的付费客户施加了巨大压力,而这种压力是由这些缺陷在知名博客和 Slashdot 上的曝光所引发的。

strict 现在可以正确地传播到字符串 eval 中

在 5.8.8 及更早版本中

$ perl5.8.8 -e 'use strict; eval "use foo bar" or die $@'
Can't locate foo.pm in @INC (@INC contains: ... .) at (eval 1) line 2.
BEGIN failed--compilation aborted at (eval 1) line 2.

在 5.8.9 及更高版本中

$ perl5.8.9 -e 'use strict; eval "use foo bar" or die $@'
Bareword "bar" not allowed while "strict subs" in use at (eval 1) line 1.

这可能会导致解析错误消息并依赖于错误行为的程序出现问题。

其他修复

平台特定修复

Darwin / MacOS X

OS/2

Tru64

RedHat Linux

Solaris/i386

VMS

Windows

较小的修复

新的或更改的诊断

panic: sv_chop %s

当 C 例程Perl_sv_chop()被传递了一个不在标量字符串缓冲区内的位置时,会发生这个新的致命错误。这是由有问题的 XS 代码引起的,此时无法恢复。

挂起的信号数量(%s)超过最大值

当 Perl 进程由于太多挂起的信号而必须中止时,会发生这个新的致命错误,这会导致 Perl 无法安全地处理进一步传入的信号。

panic: 尝试在 %s 中调用 %s

当在当前平台上不可用的地方使用 ACL 版本文件测试运算符时,会发生这个新的致命错误。早期的检查意味着永远不可能得到这个错误。

FETCHSIZE 返回了一个负值

新的错误表明,一个绑定的数组声称有负数个元素。

无法将 %s (%d) 升级到 %d

以前,来自 SV 升级代码的内部错误是信息量较少的无法升级这种类型的标量。现在它报告当前的内部类型,以及请求的新类型。

%s 参数不是 HASH 或 ARRAY 元素或子例程

如果向exists提供无效参数,则会抛出此错误,现在它正确地包含了“或子例程”。[RT #38955]

无法使不可覆盖的内置函数 %s 成为致命错误

Fatal 中的此错误以前没有显示所讨论的内置函数的名称(现在由上面的 %s 表示)。

在第 %d 列中识别不出字符 '%s'

此错误以前没有说明列号。

偏移量超出字符串

现在也可以通过使用 PerlIO::scalar 对文件句柄进行 seek 操作来生成。

正则表达式中指定的编码存在无效转义字符;标记为 <-- HERE in m/%s/

新错误,作为 RT #40641 修复的一部分引入,用于处理正则表达式注释中 Unicode 字符的编码。

您的机器不支持 dump/undump。

在 Win32 和 Cygwin 上调用 dump 时,会发出更具信息性的致命错误。(鉴于 dump 的目的是通过核心转储中止,而核心转储无法在这些平台上生成,因此这比静默退出更有用。)

内部更改

Perl 源代码现在可以使用 C++ 编译器而不是 C 编译器进行编译。一个必要的实现细节是,在 C++ 下,用于定义 XSUB 的宏 XS 现在包含一个 extern "C" 定义。这带来的副作用是,使用以下结构的 C++ 代码

typedef XS(SwigPerlWrapper);

现在需要写成

typedef XSPROTO(SwigPerlWrapper);

使用新的 XSPROTO 宏,以便编译。C 扩展不受影响,尽管鼓励 C 扩展也使用 XSPROTO。此更改存在于 perl 的 5.10.0 版本中,因此任何积极维护的代码,如果碰巧使用了这种结构,应该已经进行了调整。需要更改的代码将导致编译错误。

对局部化/赋值到魔法变量的 set 魔法现在只会在 容器魔法 时触发,即它会对 %ENV%SIG 触发,但不会对 $#array 触发。

新的 API 宏 newSVpvs() 可用于代替诸如 newSVpvn("ISA", 3) 之类的结构。它接受一个字符串常量,并在 C 编译时确定其长度。

新的 API 函数 Perl_newSV_type() 可用作以下常见习语的更有效替代

sv = newSV(0);
sv_upgrade(sv, type);

类似地,Perl_newSVpvn_flags() 可用于将 Perl_newSVpv()Perl_sv_2mortal() 或等效的 Perl_sv_newmortal()Perl_sv_setpvn() 相结合

添加了两个新的宏 mPUSHs()mXPUSHs(),以便更轻松地将 mortal SV 推送到堆栈上。然后,它们被用来修复几个错误,这些错误是在堆栈上的值没有被设置为 mortal。

添加了一个名为 Perl_signbit() 的函数来测试 NV 的符号。它在可用时映射到系统函数。

Perl_av_reify()Perl_lex_end()Perl_mod()Perl_op_clear()Perl_pop_return()Perl_qerror()Perl_setdefout()Perl_vivify_defelem()Perl_yylex() 现在对扩展可见。这是为了让 Data::Alias 在 Windows 上工作。

Perl_find_runcv() 现在对 Perl 核心扩展可见。这是为了让 Sub::Current 在 Windows 上工作。

ptr_table* 函数现在在非线程化的 Perl 中可用。Storable 利用了这一点。

内部进行了许多小的清理。特别是,Perl_sv_upgrade() 已被大大简化,使用 memset()memcpy() 来初始化新主体,而不是通过多个临时变量进行赋值。它还受益于对竞技场管理代码的简化和去重。

由于 Coverity 静态代码分析器的报告,代码库中进行了许多小的改进。

更正了 Perl_gv_stashpv()Perl_gv_stashpvn()Perl_gv_stashsv() 函数的使用和文档(最后一个参数是位掩码,而不是布尔值)。

PERL_SYS_INITPERL_SYS_INIT3PERL_SYS_TERM 宏已更改为函数。

PERLSYS_TERM 不再需要上下文。PerlIO_teardown() 现在在没有上下文的情况下被调用,并且此函数中的调试输出已被禁用,因为这需要存在解释器,而这在终止时是一个无效的假设。

所有影响二进制兼容性的编译时选项都已组合到一个全局变量中(PL_bincompat_options)。

PERL_REVISIONPERL_VERSIONPERL_SUBVERSION 的值现在被烘焙到全局变量中(因此被烘焙到任何共享的 Perl 库中)。此外,在 MULTIPLICITY 下,Perl 可执行文件现在记录解释器结构的大小(总大小和此版本的大小)。结合 PL_bincompat_options,这将允许 5.8.10(及更高版本)在使用共享 Perl 库编译时,在 main() 中执行健全性检查,以验证共享库是否确实与二进制兼容。

符号引用现在可以包含嵌入的 NUL。如果必须处理它们,扩展可以使用新的公共函数 Perl_get_cvn_flags()

宏清理

核心代码以及 ext 中不在 CPAN 上双重生存的 XS 代码不再使用 PL_naNEWSV()Null()NullavNullcvNullhvNullhv 宏。在新的代码中不鼓励使用它们,特别是 PL_na,它会带来轻微的性能损失。

新增测试

许多从 CPAN 更新的模块包含新的测试。还添加了一些核心特定测试。

ext/DynaLoader/t/DynaLoader.t

DynaLoader 模块的测试。

t/comp/fold.t

编译时常量折叠的测试。

t/io/pvbm.t

从 5.10.0 中合并的测试,用于检查内部类型 PVBMPVGV 之间没有意外的交互。

t/lib/proxy_constant_subs.t

针对新形式的常量子例程的测试。

t/op/attrhand.t

针对 Attribute::Handlers 的测试。

t/op/dbm.t

针对 dbmopen 的测试。

t/op/inccode-tie.t

在先绑定 @INC 后,调用 t/op/inccode.t 中的所有测试。

t/op/incfilter.t

针对 @INC 中代码引用返回的源代码过滤器进行测试。

t/op/kill0.t

针对 RT #30970 的测试。

t/op/qrstack.t

针对 RT #41484 的测试。

t/op/qr.t

针对 qr// 结构的测试。

t/op/regexp_qr_embed.t

针对另一个正则表达式中的 qr// 结构的测试。

t/op/regexp_qr.t

针对 qr// 结构的测试。

t/op/rxcode.t

针对 RT #32840 的测试。

t/op/studytied.t

针对绑定标量的 study 的测试。

t/op/substT.t

针对 -T 模式下运行的 subst 的测试。

t/op/symbolcache.t

针对绑定到子例程或方法的存储区条目上的 undefdelete 的测试。

t/op/upgrade.t

Perl_sv_upgrade() 的测试。

t/mro/package_aliases.t

isa 和包别名的 MRO 测试。

t/pod/twice.t

两次调用 Pod::Parser 的测试。

t/run/cloexec.t

exec(关闭执行)继承文件描述符的测试。

t/uni/cache.t

UTF-8 缓存代码的测试。

t/uni/chr.t

测试奇怪的编码不会影响 Perl_pp_chr()

t/uni/greek.t

RT #40641 的测试。

t/uni/latin2.t

RT #40641 的测试。

t/uni/overload.t

从重载值返回 Unicode 的测试。

t/uni/tie.t

从绑定变量返回 Unicode 的测试。

已知问题

目前没有已知的新错误。

但是,依赖于已修复错误的程序将出现问题。此外,5.10.0 中的许多错误修复无法移植到 5.8.x 分支,因为它们需要二进制不兼容的更改,或者因为代码更改太大,因此风险太大而无法合并。

我们的志愿者人力有限,维护负担越来越复杂。因此,这将是 5.8.x 系列的最后一个重大版本。5.8.x 的任何未来版本可能只会用于处理安全问题和平台构建失败。因此,如果您还没有开始迁移,您应该考虑迁移到 5.10.x。或者,如果业务需求限制您继续使用 5.8.x,您可能希望考虑从 ActiveState 等公司获得商业支持。

平台特定说明

Win32

readdir()cwd()$^X@INC 现在使用备用(短)文件名,如果长文件名不在当前代码页中(Jan Dubois)。

更新的模块

OS/2

更新的模块

VMS

更新的模块

讣告

Nick Ing-Simmons,长期 Perl 黑客,TkEncode 模块的作者,核心中的 perlio.c,以及 5.003_02 的负责人,于 2006 年 9 月 25 日因心脏病去世。他将被怀念。

致谢

本版本中的一些工作由 TPF 资助。

Steve Hay 在幕后工作,找出核心模块、它们的 CPAN 版本和之前的核心版本之间差异的原因,以及纠正这些差异的最佳方法。他不想再做一次了。我知道这种感觉,我很高兴这次是他做了,而不是我。

Paul Fenwick 组建了一支由 18 名志愿者组成的团队,他们承担了编写本文档的主要工作。特别是 Bradley Dean、Eddy Tan 和 Vincent Pit 提供了团队贡献的一半。

Schwern 验证了更新的模块版本列表,纠正了我(以及其他人)遗漏的许多错误,包括错误的模块版本和未列出的更改的模块。

来自柏林的优秀 QA 团队 Andreas König 和 Slaven Rezic 不懈地重建快照,测试了 CPAN 上的大多数内容,然后确定导致任何模块回归的更改,确保在第一个候选版本发布之前,几个阻止程序错误被修复。

其他核心提交者贡献了大部分更改,并应用了数百位贡献者在 AUTHORS 中列出的补丁。

当然,还有 Larry Wall,没有他,我们就不会有 Perl。

报告错误

如果您发现您认为是错误的内容,您可以查看最近发布到 comp.lang.perl.misc 新闻组和 Perl 错误数据库 (http://bugs.perl.org) 的文章。Perl 主页 (https://www.perl5.cn) 上也可能有一些信息。

如果您认为您遇到了未报告的错误,请运行您发布版本中包含的 perlbug 程序。请务必将您的错误缩减为一个微小但足够的测试用例。您的错误报告以及 perl -V 的输出将被发送到 [email protected],由 Perl 移植团队进行分析。您可以在 http://bugs.perl.org/ 浏览和搜索 Perl 5 错误。

如果您要报告的错误存在安全隐患,不适合发送到公开存档的邮件列表,请将其发送到 [email protected]。此地址指向一个封闭的订阅未存档邮件列表,其中包含所有核心提交者,他们可以帮助评估问题的影响,找出解决方案,并帮助协调跨所有支持 Perl 平台的补丁发布以减轻或修复问题。请仅将此地址用于 Perl 核心中的安全问题,不要用于 CPAN 上独立分发的模块。

另请参阅

有关更改的详细信息,请参阅 Changes 文件。

有关如何构建 Perl 的说明,请参阅 INSTALL 文件。

有关一般信息,请参阅 README 文件。

有关版权信息,请参阅 ArtisticCopying 文件。