英语法语西班牙语

OnWorks 网站图标

perl5200delta - 云端在线

在 OnWorks 免费托管服务提供商中通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器运行 perl5200delta

这是命令 perl5200delta 可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


perl5200delta - perl v5.20.0 的新功能

商品描述


本文档描述了 5.18.0 版本和 5.20.0 版本之间的差异。

如果您是从较早的版本(例如 5.16.0)升级,请先阅读 perl5180delta,
它描述了 5.16.0 和 5.18.0 之间的差异。

核心 增强


实验 子程序 签名
将参数列表解包为词法变量的声明性语法。 "子 foo ($a,$b)
{...}" 检查参数的数量并将参数放入词法变量中。
签名不等同于“sub foo { my($a,$b) = @_; ... }”的现有习语。
签名仅在启用非默认功能时可用,并生成警告
关于实验性。 与原型的语法冲突是通过禁用
启用签名时的简短原型语法。

有关详细信息,请参阅 perlsub 中的“签名”。

“子” 现在 采取 a “原型” 属性
在声明或定义“子”时,现在可以在一个内部指定原型
“prototype”属性而不是在名称后面的括号中。

例如,“sub foo($$){}”可以改写为“sub foo :prototype($$){}”。

更多 一贯 原型 解析
子程序原型中的多个分号长期以来一直被容忍并被视为
单分号。 有一种情况没有发生这种情况。 一个子程序,其
原型以“*”或“;*”开头会影响是否将裸字视为方法
名称或子呼叫。 这现在也适用于“;;;*”。

长期以来,子程序原型中都允许使用空格,因此“sub( $ $ )”是
相当于“sub($$)”,但直到现在它在解析子程序时被剥离。
因此,空格是 不需要 允许在由“Scalar::Util::set_prototype”设置的原型中。 现在
这是允许的,解析器不再去除空格。 这意味着“原型
&mysub" 返回原始原型、空格等。

“兰特” 现在 使用 a 一贯 随机 发电机
以前 perl 会使用特定于平台的随机数生成器,在
libc中 RAND(), 随机() or 德兰德48().

这意味着 perl 随机数的质量会因平台而异,
从 15 位 RAND() 在 Windows 上到 48 位在 POSIX 平台(如 Linux)上
德兰德48().

Perl 现在使用它自己的内部 德兰德48() 在所有平台上实施。 这不
使 perl 的“rand”加密安全。 [perl #115928]

全新 句法
新的 %hash{...} 和 %array[...] 语法返回键/值(或索引/值)列表
对。 请参阅 perldata 中的“键/值哈希切片”。

实验 后缀 解除引用
当“postderef”功能生效时,设置以下句法等效项
达:

$sref->$*; # 与 ${ $sref } 相同 # 插值
$aref->@*; # 与@{ $aref } 相同 # 插值
$href->%*; # 与 %{ $href } 相同
$cref->&*; # 与 &{ $cref } 相同
$gref->**; # 与 *{ $gref } 相同

$aref->$#*; # 与 $#{ $aref } 相同

$gref->*{ $slot }; # 与 *{ $gref }{ $slot } 相同

$aref->@[ ... ]; # 与@$aref[ ... ] 相同 # 插值
$href->@{ ... }; # 与@$href{ ... } 相同 # 插值
$aref->%[ ... ]; # 与 %$aref[ ... ] 相同
$href->%{ ... }; # 与 %$href{ ... } 相同

标记为插值的那些仅在关联的“postderef_qq”功能是
也启用。 这个功能是 试验 并且会触发
"experimental::postderef"-category 使用时的警告,除非它们被抑制。

有关更多信息,请参阅 perlref 的 Postfix Dereference Syntax 部分。

统一 6.3 现在 支持的
Perl 现在支持并随 Unicode 6.3 一起提供(尽管 Perl 可以用任何
之前的 Unicode 版本也是如此)。 Unicode 6.3 更改的详细列表位于
<http://www.unicode.org/versions/Unicode6.3.0/>.

全新 "\p{Unicode}" 定期 表达 模式 财产
这是 "\p{Any}" 的同义词,并匹配 Unicode 定义的代码点集 0 -
0x10FFFF。

更好 64 bit 支持
在 64 位平台上,内部数组函数现在使用 64 位偏移量,允许 Perl
如果您有可用的内存,数组可以容纳超过 2**31 个元素。

正则表达式引擎现在支持长度超过 2**31 个字符的字符串。 [perl
#112790、#116907]

函数 PerlIO_get_bufsiz、PerlIO_get_cnt、PerlIO_set_cnt 和 PerlIO_set_ptrcnt 现在
有 SSize_t,而不是 int,返回值和参数。

“用 地区” 现在 合作 on UTF-8 当地
在此版本之前,仅支持单字节语言环境,例如 ISO 8859 系列。
现在,还支持越来越常见的多字节 UTF-8 语言环境。 UTF-8 语言环境
是一种字符集为 Unicode 且编码为 UTF-8 的字符集。 POSIX
“LC_CTYPE”类别操作(大小写更改(如“lc()”、“\U”)和字符
分类 ("\w", "\D", "qr/[[:punct:]]/")) 在这样的语言环境下工作就像没有
在语言环境下,但就像在“使用功能'unicode_strings'”下一样,除了污点规则
遵循。 在此版本中,仍按代码点顺序进行排序。 [perl #56820]。

“用 地区” 现在 编译 on 系统 也完全不需要 当地 对,能力--
以前这样做会导致程序无法编译。 该计划在其范围内
行为就像在“C”语言环境中一样。 因此,为支持语言环境的平台编写的程序
可以在无语言环境的平台上运行而无需更改。 尝试将区域设置从
“C”语言环境当然会失败。

更多 当地 初始化 后备 选项
如果在 Perl 启动过程中出现 locales 错误,它立即放弃并尝试
使用“C”语言环境。 现在它首先尝试使用环境给出的其他语言环境
变量,详见 perllocale 中的“环境”。 例如,如果“LC_ALL”和
"LANG" 都已设置,并且使用 "LC_ALL" 语言环境失败,Perl 现在将尝试 "LANG"
语言环境,并且只有在失败时,它才会回退到“C”。 在 Windows 机器上,Perl 将
尝试,在使用“C”之前,如果环境给出的所有语言环境,则系统默认语言环境
变量失败。

“-DL” 运行 选项 现在 添加 追踪 当地 设置
这是为 Perl 核心开发人员设计的,以帮助现场调试有关
本地。

-F 现在 暗示 -a -a 暗示 -n
先前 -F 也完全不需要 -a 没有操作,并且 -a 也完全不需要 -n or -p 没有操作,有了这个
改变,如果你提供 -F 然后两者 -a-n 是隐含的,如果您提供 -a 然后 -n is
默示。

你仍然可以使用 -p 因为它的额外行为。 [perl #116190]

$a $b 警告 豁免
“排序”中使用的特殊变量 $a 和 $b 现在不受“使用一次”警告的影响,
即使不使用“排序”。 这使得 CPAN 模块更容易提供功能
将 $a 和 $b 用于类似目的。 [perl #120462]

安全性


避免 可能 of 自由()d 记忆 ,我们将参加 解析
有可能 自由()d 内存可以在异常解析过程中被读取
Perl 程序以 heredoc 和文件的最后一行结尾的情况
没有终止换行符的磁盘。 现在已经解决了这个问题。

不相容 更改


“做” 能够 没有 不再 be 用过的 呼叫 子程序
自 Perl v5.0.0 以来,“do SUBROUTINE(LIST)”表单已导致弃用警告,
现在是语法错误。

类似引用 逃生 变化
双引号字符串("..." 或 qq(...))中 "\c" 后的字符或常规字符
表达式现在必须是可打印的字符,不能是“{”。

“\B”或“\b”之后的文字“{”现在是致命的。

这些在 perl v5.14.0 中已被弃用。

污染 发生 更多 情况; 现在 符合 文件
这会影响正则表达式匹配和更改字符串的大小写(“lc”、“\U”、
等。.) 在“使用语言环境”的范围内。 结果现在根据操作受到污染,
无论字符串的内容是什么,作为文档(perlsec,“安全”
在 perllocale 中)表示它应该。 以前,对于案例更改操作,如果
字符串不包含大小写更改可能受区域设置影响的字符,
结果不会被污染。 例如,“uc()”对空字符串或一个的结果
只包含高于Latin1 的代码点现在被污染了,以前没有。 这将导致
更一致的污染结果。 正则表达式模式污染了它们的非二进制
结果(如 $&, $2)当且仅当模式包含匹配依赖的元素
在当前(可能被污染的)语言环境中。 与大小写更改功能一样,实际
匹配的字符串的内容现在无关紧要,而以前是。 为了
例如,如果模式包含“\w”,即使匹配成功,结果也会被污染
不必使用模式的那部分来成功或失败,因为什么是“\w”
匹配取决于语言环境。 但是,例如,“。” 在模式中不会启用
污染,因为点匹配任何单个字符,以及当前的语言环境
不会以任何方式改变匹配和不匹配的内容。

"\p{}", "\P{}" 匹配 具有 非统一码 点。
"\p{}" 和 "\P{}" 由 Unicode 定义仅在 Unicode 定义的代码点 ("U+0000"
通过“U+10FFFF”)。 他们匹配这些合法的 Unicode 代码点的行为是
不变,但代码点 0x110000 及以上有变化。 以前,Perl
将 "\p{}" 和 "\P{}" 与这些匹配的结果视为 "undef",即
翻译成“假”。 对于“\P{}”,这被补充为“true”。 一个警告
应该在发生这种情况时提出。 但是,各种优化可以
阻止警告,结果通常是违反直觉的,匹配和
它的表面补充是错误的。 现在所有非 Unicode 代码点都被视为
典型的未分配 Unicode 代码点。 这通常更像是 Do-What-I-Mean。 一个警告
仅当结果可能与严格的 Unicode 方法不同时才会引发,并且
从 Perl 过去所做的。 需要严格符合 Unicode 的代码可以使这个
警告致命,然后 Perl 总是引发警告。

详细信息在 perlunicode 中的“Beyond Unicode code points”中。

"\p{全部}" 具有 扩大 匹配 所有 可能
Perl 定义的正则表达式模式元素“\p{All}”,在 CPAN 上未使用,用于
仅匹配 Unicode 代码点; 现在它匹配所有可能的代码点; 这就对了
相当于“qr/./s”。 因此,“\p{All}”不再与“\p{Any}”同义,后者
继续只匹配 Unicode 代码点,正如 Unicode 所说的那样。

数据::倾销者的 产量 五月 更改
根据转储的数据结构和为 Data::Dumper 设置的设置,转储的
输出可能与以前的版本有所不同。

如果您的测试依赖于 Data::Dumper 的确切输出,则它们可能会失败。

为避免代码中出现此问题,请通过评估数据结构来测试
转储结构,而不是转储本身。

语言环境 十进制 字符 没有 不再 泄漏 学校以外 of “用 地区” 范围
这实际上是一个错误修复,但一些代码已经开始依赖于存在的错误,所以
此处列出了此更改。 程序运行所在的当前语言环境不是
应该对 Perl 代码可见,除非在“使用区域设置”的范围内。 然而,
直到现在,在某些情况下,用于小数点的字符(通常是
逗号)泄漏到范围之外。 如果您的代码受此更改影响,只需添加一个
“使用语言环境”。

分配 of Windows 插座 错误 代码 $! 现在 比较喜欢 错误号 价值观 超过
WSAGetLastError() 方法 价值观
在以前版本的 Perl 中,Windows 套接字错误代码由 WSAGetLastError() 方法
被分配给 $!,以及一些常量,例如 ECONNABORTED,而不是 错误号 在 VC++(或
gcc 的各种 Windows 端口)被定义为相应的 WSAE* 值以允许 $!
将针对 Errno 和 POSIX 导出的 E* 常量进行测试。

这在 VC++ 2010 及更高版本之前一直有效,它引入了带有值的新 E* 常量
> 100 进 错误号,包括一些被 perl(重新)定义为 WSAE* 的值。 那造成
将 XS 代码与使用原始定义的其他库链接时的问题
of 错误号 常数。

为了避免这种不兼容,perl 现在将 WSAE* 错误代码映射到 E* 值,其中
可能,并将这些值分配给 $!。 Errno 和 POSIX 导出的 E* 常量
更新以匹配以便测试 $! 在以前可能的情况下,反对他们
继续按预期工作,并且在 错误号 现在从
那些带有原始模块的模块 错误号 值。

为了避免将 WSAE* 值分配给 $! 的现有 Perl 代码损坏,perl
现在拦截分配并执行与它使用的相同的 E* 值映射
在内部分配给 $! 本身。

然而,一个向后不兼容仍然存在:现有的 Perl 代码比较 $!
与之前分配给 $!
现在将在分配了相应 E* 值的情况下被破坏
反而。 这只是那些 E* 值 < 100 的问题,它们总是从
Errno 和 POSIX 及其原始版本 错误号 值,因此不能用于
WSAE* 错误代码测试(例如 WSAEINVAL 是 10022,但对应的 EINVAL 是 22)。 (E*
值 > 100(如果存在)无论如何都会重新定义为 WSAE* 值,因此兼容性可以
通过使用 E* 常量来实现,该常量在此更改之前和之后都可以使用,
尽管在幕后使用了不同的数值。)

功能 "PerlIO_vsprintf" "PerlIO_sprintf" 它们在许多情况下都能提供类似的结果。 去除
这两个未记录、未在 CPAN 中未使用和有问题的函数已被删除。

弃用


“/\C/” 字符
不推荐使用“/\C/”正则表达式字符类。 从 perl 5.22 开始
将产生一个警告,从 perl 5.24 开始它将是一个正则表达式
编译器错误。 如果您需要检查构成 UTF8 编码的单个字节
字符,然后首先在字符串(或副本)上使用“utf8::encode()”。

字面 控制 字符 in 变量 名称
这种弃用会影响 $\cT 之类的东西,其中 \cT 是文字控件(例如“NAK”
或“否定确认”字符)在源代码中。 令人惊讶的是,似乎
最初,这是作为访问 $^T 等变量的规范方式,使用
插入符号形式仅作为替代添加。

文字控制表单被弃用的主要原因有两个。 它有什么可能
无法修复的错误,例如 $\cI 不能用作 $^I 的别名,并且它们的用法不被
可移植到非 ASCII 平台:虽然 $^T 可以在任何地方使用,但 \cT 是空格
EBCDIC。 [perl #119123]

参考资料 非整数 非阳性 整数 in $/
现在不推荐将 $/ 设置为对零的引用或对负整数的引用,
并且会表现 究竟 好像它被设置为“undef”。 如果你想设置啜饮行为
$/ 明确地“undef”。

现在禁止将 $/ 设置为对非整数的引用,并且会引发错误。 珀尔
从来没有记录在这种情况下会发生什么,虽然它曾经表现
与将 $/ 设置为将来引用的地址相同,它的行为可能会有所不同,
所以我们禁止这种用法。

字符 匹配 例程 in POSIX
现在不推荐在“POSIX”模块中使用任何这些函数:“isalnum”,
"isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace",
“isupper”和“isxdigit”。 这些函数有问题并且不适用于 UTF-8 编码
字符串。 有关更多信息,请参阅他们在 POSIX 中的条目。

从代码中的每个位置第一次调用它们中的任何一个时都会引发警告
叫做。 (因此循环中的重复语句只会引发一个警告。)

基于口译 线程 旨在 现在 泄气
Perl 提供的“基于解释器的线程”不是快速、轻量级的系统
人们可能期望或希望的多任务处理。 线程的实现方式是
使它们容易被滥用。 很少有人知道如何正确使用它们或能够
提供帮助。

官方不鼓励在 perl 中使用基于解释器的线程。

模块 搬迁
以下模块将在未来版本中从核心发行版中删除,并且
届时需要从 CPAN 安装。 CPAN 上的发行版需要
这些模块需要将它们列为先决条件。

这些模块的核心版本现在将发出“已弃用”类别警告以提醒
你对这个事实。 要消除这些弃用警告,请安装有问题的模块
来自 CPAN。

请注意,计划从核心中删除这些模块并不反映判断
关于代码的质量,不应被视为建议使用它们
停了下来。 他们被排除在核心之外主要取决于他们引导的必要性
一个功能齐全、支持 CPAN 的 Perl 安装,而不是担心他们的设计。

CGI 及其相关的 CGI:: 包
公司::最新
包::常量
Module::Build 及其关联的 Module::Build:: 包

公用事业 搬迁
在未来的版本中,以下实用程序将从核心发行版中删除,
并且那时需要从 CPAN 安装。

查找2perl
s2p
a2p

性能 增强


· Perl 有一个新的写时复制机制,避免了内部复制的需要
从一个标量分配给另一个标量时的字符串缓冲区。 这使得复制大
字符串出现得更快。 修改两个(或多个)字符串之一
分配将在内部强制复制。 这使得没有必要通过字符串传递
效率参考。

此功能已在 5.18.0 中可用,但默认情况下未启用。 它是
现在默认,所以你不再需要用 配置 参数:

-Accflags=-DPERL_NEW_COPY_ON_WRITE

它可以在 perl 构建中禁用(现在):

-Accflags=-DPERL_NO_COW

在某些操作系统上,Perl 的编译方式可以使任何尝试
修改由多个 SV 共享的字符串缓冲区将崩溃。 这样XS作者可以测试
他们的模块正确处理写时复制标量。 参见“写时复制”
详细信息。

· Perl 有一个用于正则表达式模式的优化器。 它分析模式
查找诸如字符串必须匹配的最小长度等内容。现在
更好地处理高于 Latin1 范围的代码点。

· 执行包含“^”锚点(或其在“/m”标志下的变体)的正则表达式
在几种情况下都变得更快了。

· 现在在方法查找期间在更多地方使用预计算的散列值。

· 常量哈希键查找($hash{key} 而不是 $hash{$key})
在编译时计算的内部哈希值,以加快查找速度。 这个优化
现在才应用于哈希切片。

· 在 void 上下文中组合“和”和“或”运算符,就像为“除非
($a && $b)" 和 "if ($a || b)" 现在直接短路到语句的末尾。
[perl #120128]

· 在某些情况下,当“return”是子程序主程序中的最后一条语句时
范围,它将被优化。 这意味着代码如下:

sub baz { 返回 $cat; }

现在的行为如下:

子 baz { $cat; }

这明显更快。

[perl #120765]

· 代码如:

我的 $x; # 或 @x, %x
我的 $y;

现在优化为:

我的 ($x, $y);

结合 v5.18.0 中引入的 padrange 优化,这意味着更长
未初始化我的变量语句也被优化,所以:

我的 $x; 我的@y; 我的 %z;

变为:

我的 ($x, @y, %z);

[perl #121077]

· 现在可以创建某些类型的列表,包括数组和哈希切片
更快。

· 对以小常数整数索引的数组的优化现已应用于
-128..127 范围内的整数,而不是 0..255。 这应该会加速 Perl 代码
使用像 $x[-1] 这样的表达式,代价是(可能更罕见的)代码使用
像 $x[200] 这样的表达式。

· 大散列上的第一次迭代(使用“键”或“每个”)现在更快。 这是
通过预先分配散列的内部迭代器状态而不是懒惰地实现
在第一次迭代哈希时创建它。 (对于小哈希,迭代器仍然是
仅在首次需要时创建。 假设是小散列更有可能
被用作对象,因此永远不会被分配。 对于大散列,这更少
可能是真的,并且分配迭代器的成本被
为散列本身分配空间。)

· 对来自“readline”或“<>”的字符串进行全局正则表达式匹配时
操作员,数据不再被不必要地复制。 [perl #121259]

· 当 $obj 是一个
具有重载方法但不重载任何方法的类的实例
解引用方法“@{}”、“%{}”等。

· Perl 的优化器不再跳过特定“eval {}”之后的优化代码
表达式(包括那些具有明显无限循环的表达式)。

· 实现现在可以更好地避免运行时的无意义工作。
内部无效果的“空”操作(作为解析 Perl 的副作用创建)
程序)通常在编译期间被删除。 该删除现在应用于
一些以前没有处理过的情况。

· Perl 现在在处理覆盖最多的 Unicode 属性时执行更少的磁盘 I/O
三个范围的连续码点。

模块 实用语


全新 模块 实用语
· 实验性 0.007 已添加到 Perl 核心。

· IO::Socket::IP 0.29 已添加到 Perl 核心。

更新 模块 实用语
· Archive::Tar 已从版本 1.90 升级到 1.96。

· arybase 从0.06 版本升级到0.07。

· Attribute::Handlers 已从 0.94 版升级到 0.96 版。

· 属性从0.21版本升级到0.22。

· autodie已从2.13版本升级到2.23。

· AutoLoader 已从版本 5.73 升级到 5.74。

· autouse 已从1.07 版升级到1.08 版。

· B 已从 1.42 版本升级到 1.48。

· B::Concise 已从 0.95 版本升级到 0.992。

· B::Debug 已从 1.18 版升级到 1.19 版。

· B::Deparse 已从 1.20 版升级到 1.26 版。

· base 已经从 2.18 版本升级到 2.22。

· Benchmark 从 1.15 版本升级到 1.18。

· bignum 已从 0.33 版本升级到 0.37。

· 鲤鱼从1.29版本升级到1.3301。

· CGI从3.63版本升级到3.65。 注意:CGI 已被弃用,可能是
从 Perl 的未来版本中删除。

· charnames 已从版本 1.36 升级到 1.40。

· Class::Struct 已从 0.64 版升级到 0.65 版。

· Compress::Raw::Bzip2 已从 2.060 版本升级到 2.064。

· Compress::Raw::Zlib 已从版本 2.060 升级到 2.065。

· Config::Perl::V 已从 0.17 版升级到 0.20 版。

·常量从1.27版本升级到1.31。

· CPAN 从2.00 版本升级到2.05。

· CPAN::Meta 已从版本 2.120921 升级到 2.140640。

· CPAN::Meta::Requirements 已从 2.122 版升级到 2.125 版。

· CPAN::Meta::YAML 已从 0.008 版本升级到 0.012。

· Data::Dumper 已从版本 2.145 升级到 2.151。

· DB已从1.04版升级到1.07版。

· DB_File 已从版本 1.827 升级到 1.831。

· DBM_Filter 已从 0.05 版升级到 0.06 版。

· deprecate 已从版本 0.02 升级到 0.03。

· Devel::Peek 已从 1.11 版升级到 1.16 版。

· Devel::PPPort 已从 3.20 版本升级到 3.21。

· 诊断已从版本 1.31 升级到 1.34。

· Digest::MD5 已从版本 2.52 升级到 2.53。

· Digest::SHA 已从版本 5.84 升级到 5.88。

· DynaLoader 已从版本 1.18 升级到 1.25。

· Encode 已从 2.49 版升级到 2.60 版。

·编码从2.6_01版升级到2.12版。

· 英文从1.06版升级到1.09版。

$OLD_PERL_VERSION 被添加为 $] 的别名。

· Errno 已从版本 1.18 升级到 1.20_03。

· Exporter 已从版本 5.68 升级到 5.70。

· ExtUtils::CBuilder 从 0.280210 版本升级到 0.280216。

· ExtUtils::Command 已从 1.17 版升级到 1.18 版。

· ExtUtils::Embed 已从 1.30 版升级到 1.32 版。

· ExtUtils::Install 已从版本 1.59 升级到 1.67。

· ExtUtils::MakeMaker 从 6.66 版升级到 6.98 版。

· ExtUtils::Miniperl 已从版本升级到 1.01。

· ExtUtils::ParseXS 已从版本 3.18 升级到 3.24。

· ExtUtils::Typemaps 已从 3.19 版升级到 3.24 版。

· ExtUtils::XSSymSet 已从 1.2 版升级到 1.3 版。

· 功能从1.32版升级到1.36版。

· 字段已从版本 2.16 升级到 2.17。

· File::Basename 已从版本 2.84 升级到 2.85。

· File::Copy 已从 2.26 版升级到 2.29 版。

· File::DosGlob 已从 1.10 版升级到 1.12 版。

· File::Fetch 从 0.38 版本升级到 0.48。

· File::Find 已从 1.23 版升级到 1.27 版。

· File::Glob 已从版本 1.20 升级到 1.23。

· File::Spec 已从 3.40 版升级到 3.47 版。

· File::Temp 从 0.23 版本升级到 0.2304。

· FileCache 已从 1.08 版升级到 1.09 版。

· Filter::Simple 已从 0.89 版本升级到 0.91。

· Filter::Util::Call 已从版本 1.45 升级到 1.49。

· Getopt::Long 已从版本 2.39 升级到 2.42。

· Getopt::Std 已从 1.07 版升级到 1.10 版。

· Hash::Util::FieldHash 已从 1.10 版升级到 1.15 版。

· HTTP::Tiny 已从版本 0.025 升级到 0.043。

· I18N::Langinfo 已从 0.10 版本升级到 0.11。

· I18N::LangTags 已从 0.39 版升级到 0.40 版。

· 如果已经从版本 0.0602 升级到 0.0603。

· inc::latest 已从版本 0.4003 升级到 0.4205。 注意: Inc::latest 是
不推荐使用,可能会从 Perl 的未来版本中删除。

· integer 已从版本 1.00 升级到 1.01。

· IO从1.28版本升级到1.31。

· IO::Compress::Gzip 和好友从2.060 版本升级到2.064。

· IPC::Cmd 已从 0.80 版升级到 0.92 版。

· IPC::Open3 已从 1.13 版升级到 1.16 版。

· IPC::SysV 已从 2.03 版升级到 2.04 版。

· JSON::PP 已从版本 2.27202 升级到 2.27203。

· List::Util 已从版本 1.27 升级到 1.38。

· 语言环境已从版本 1.02 升级到 1.03。

· Locale::Codes 已从版本 3.25 升级到 3.30。

· Locale::Maketext 已从版本 1.23 升级到 1.25。

· Math::BigInt 已从版本 1.9991 升级到 1.9993。

· Math::BigInt::FastCalc 已从 0.30 版本升级到 0.31。

· Math::BigRat 已从 0.2604 版本升级到 0.2606。

· MIME::Base64 已从 3.13 版升级到 3.14 版。

· Module::Build 已从 0.4003 版本升级到 0.4205。 注意:模块::构建是
不推荐使用,可能会从 Perl 的未来版本中删除。

· Module::CoreList 已从 2.89 版升级到 3.10 版。

· Module::Load 已从 0.24 版升级到 0.32 版。

· Module::Load::Conditional 已从 0.54 版升级到 0.62 版。

· Module::Metadata 已从版本 1.000011 升级到 1.000019。

· mro 已从1.11 版升级到1.16 版。

· Net::Ping 已从 2.41 版升级到 2.43 版。

· Opcode 已从 1.25 版升级到 1.27 版。

· Package::Constants 已从 0.02 版升级到 0.04 版。 笔记:
Package::Constants 已弃用,可能会从 Perl 的未来版本中删除。

· Params::Check 已从 0.36 版升级到 0.38 版。

· parent 已从版本 0.225 升级到 0.228。

· Parse::CPAN::Meta 已从版本 1.4404 升级到 1.4414。

· Perl::OSType 已从版本 1.003 升级到 1.007。

· perlfaq 已从版本 5.0150042 升级到 5.0150044。

· PerlIO 已从 1.07 版升级到 1.09 版。

· PerlIO::encoding 已从 0.16 版升级到 0.18 版。

· PerlIO::scalar 已从 0.16 版升级到 0.18 版。

· PerlIO::via 已从 0.12 版升级到 0.14 版。

· Pod::Escapes 已从 1.04 版升级到 1.06 版。

· Pod::Functions 已从 1.06 版升级到 1.08 版。

· Pod::Html 从 1.18 版本升级到 1.21。

· Pod::Parser 已从 1.60 版升级到 1.62 版。

· Pod::Perldoc 已从 3.19 版升级到 3.23 版。

· Pod::Usage 从 1.61 版本升级到 1.63。

· POSIX 已从版本 1.32 升级到 1.38_03。

· re已从0.23版升级到0.26版。

· Safe 已从版本 2.35 升级到 2.37。

· Scalar::Util 已从版本 1.27 升级到 1.38。

· SDBM_File 已从版本 1.09 升级到 1.11。

· Socket 已从 2.009 版升级到 2.013 版。

· Storable 已从版本 2.41 升级到 2.49。

· strict 从1.07 版升级到1.08 版。

· subs 已从 1.01 版升级到 1.02 版。

· Sys::Hostname 已从版本 1.17 升级到 1.18。

· Sys::Syslog 已从 0.32 版本升级到 0.33。

· Term::Cap 已从版本 1.13 升级到 1.15。

· Term::ReadLine 已从版本 1.12 升级到 1.14。

· Test::Harness 已从 3.26 版升级到 3.30 版。

· Test::Simple 已从 0.98 版本升级到 1.001002。

· Text::ParseWords 已从版本 3.28 升级到 3.29。

· Text::Tabs 已从版本 2012.0818 升级到 2013.0523。

· Text::Wrap 已从版本 2012.0818 升级到 2013.0523。

· 线程从3.02版本升级到3.04。

· Thread::Queue 已从 3.02 版升级到 3.05 版。

·线程已从版本1.86升级到1.93。

· 线程::共享已从版本 1.43 升级到 1.46。

· Tie::Array 已从 1.05 版升级到 1.06 版。

· Tie::File 已从 0.99 版本升级到 1.00。

· Tie::Hash 已从 1.04 版升级到 1.05 版。

· Tie::Scalar 已从 1.02 版升级到 1.03 版。

· Tie::StdHandle 已从 4.3 版升级到 4.4 版。

· Time::HiRes 已从版本 1.9725 升级到 1.9726。

· Time::Piece 已从版本 1.20_01 升级到 1.27。

· Unicode::Collat​​e 已从 0.97 版升级到 1.04 版。

· Unicode::Normalize 已从 1.16 版升级到 1.17 版。

· Unicode::UCD 已从 0.51 版升级到 0.57 版。

· utf8 已从 1.10 版本升级到 1.13。

· 版本从0.9902升级到0.9908。

· vmsish 已从 1.03 版升级到 1.04 版。

· 警告已从版本 1.18 升级到 1.23。

· Win32从0.47版本升级到0.49。

· XS::Typemap 从 0.10 版本升级到 0.13。

· XSLoader 已从 0.16 版升级到 0.17 版。

文档


全新 文档
资源库

这个文档在 Perl 中被删除(实际上,更名为 perlgit 并进行了大修)
v5.14,导致 Perl 文档网站在 Perl 中显示现在过时的版本
v5.12 作为最新版本。 它现在已经以存根形式恢复,引导读者
当前信息。

更改 现有 文档
数据

· 添加了新的部分来记录新的索引/值数组切片和键/值
哈希切片语法。

肠道菌群

· 现在记录了“DB::goto”和“DB::lsub”调试器子例程。 [perl #77680]

实验

· "\s" 匹配 "\cK" 被标记为实验性的。

· ithreads 在 v5.8.0 中被接受(但从 v5.20.0 开始不鼓励)。

· 长双打不被认为是实验性的。

· 正则表达式中的代码、正则表达式回溯动词和左值
子程序不再列为实验性的。 (这也会影响 perlre 和
perlsub。)

函数

· "chop" 和 "chomp" 现在注意到它们可以重置哈希迭代器。

· "exec" 对参数的处理现在更清楚地记录在案。

· “eval EXPR”现在有关于在某些语言环境中扩展浮点数的警告。

· “goto EXPR”现在被记录在案,用于处理对代码求值的表达式
引用就好像它是“goto &$coderef”。 这种行为至少已有十年历史。

· 从 Perl v5.10 开始,@INC 中的子程序可以返回引用
到保存初始源代码的标量以添加到文件中。 这是现在
记录下来。

· 更新了“ref”的文档,推荐使用“blessed”、“isa”
和“reftype”在处理对祝福对象的引用时。

口吃

· 进行了许多细微的更改以反映对 perl 内部的更改
这个版本。

· 添加了关于只读值和写时复制的新部分。

破绽

· 更新了超级快速补丁指南部分。

小贴士

· 文档已更新以包含更多“gdb”用法示例。

警告

· perllexwarn 文档用于描述警告类别的层次结构
由警告 pragma 理解。 该描述现已移至警告
文档本身,将 perllexwarn 作为指向它的存根。 这个变化
将词汇警告的所有文档合并到一个地方。

本地化

· 文档现在提到 函数() 和“\F”,包括许多说明和
一般更正。

危险

· Perl 的语言设计一直要求使用单态操作符。 这是现在
明确提到。

百香果

· “开放”教程已被汤姆克里斯蒂安森完全重写,现在重点
只涵盖基础知识,而不是提供对所有内容的全面参考
东西可以打开。 这次改写是对以下问题的热烈讨论的结果
perl5-porters 由 Alexander Hartmaier 编写的一系列改进启动
现有的perlopentut。 一个“比你想知道的“开放”还要多的文档
可能会出现在 perl 的后续版本中。

珍珠

· regexp 引擎不费力地调用 (?{}) 和 (??{}) 构造的事实
任何指定的次数(尽管它基本上会在成功的情况下进行 DWIM
匹配)已被记录。

· 现在记录了“/r”修饰符(用于非破坏性替换)。 [perl #119151]

· 对“/x”和“(?# comment)”的文档进行了扩展和澄清。

误会

· 文档已根据最近的更改进行了更新 regcomp.c.

perlsub

· 需要预先声明带有原型的递归函数以便原型
现在记录在递归调用中。 [perl #2726]

· 现在包含了 perl 实现使用的子程序名称列表。 [perl
第77680话

陷阱

· 现在有一个 JavaScript 部分。

代码

· 文档已更新以反映 Unicode 6.3 中的“Bidi_Class”更改。

帕尔瓦

· 一个新的章节解释了 $`、$& 和 $' 的性能问题,包括
添加了不同版本的 Perl 中的变通方法和更改。

· 三个早已记录在案但实际上并不存在的英文变量名
已从文档中删除。 这些是 $OLD_PERL_VERSION、$OFMT 和
$ARRAY_BASE。

(实际上,“OLD_PERL_VERSION” 存在,从本次修订开始,但仍然存在
在 perl 5.22.0 之前没有记录。)

Perlxs

· 修复了“MY_CXT”示例中的几个问题。

诊断


对诊断输出进行了以下添加或更改,包括警告
和致命的错误信息。 有关诊断消息的完整列表,请参阅 perldiag。

全新 诊断
全新 故障

· 删除参数是索引/值数组切片,使用数组切片

(F) 您使用索引/值数组切片语法 (%array[...]) 作为“删除”的参数。
您可能指的是带有 @ 符号的 @array[...] 。

· 删除参数是key/value hash slice,使用hash slice

(F) 您使用键/值哈希切片语法 (%hash{...}) 作为“删除”的参数。
您可能指的是带有 @ 符号的 @hash{...}。

· 不支持神奇的列表常量

(F) 你给一个 stash 元素分配了一个魔法数组,然后尝试使用
来自同一个槽的子程序。 你要求 Perl 做一些它不能做的事情,
详细信息可能会在 Perl 版本之间发生变化。

· 将设置 $/ 添加到 %s 引用是禁止的

全新 </p>

· %s 参考是实验性的:

“自动取消引用”功能是实验性的。

从 v5.14.0 开始,可以使用 push、pop、keys 和其他内置的
函数不仅在聚合类型上,而且在对它们的引用上。 该功能不是
部署到其最初的预期规范,现在可能变得多余
后缀解引用。 它一直被归类为实验性功能,并且
在 v5.20.0 中带有警告。

当检测到这些操作时,现在将在编译时发出警告。

否,如果 $] >= 5.01908,警告 => "experimental::autoderef";

但是,请考虑替换这些功能的使用,因为它们可能会改变行为
再次稳定之前。

· 不推荐使用字符名别名定义中的多个空格序列

不推荐使用 charnames 别名定义中的尾随空格

这两个涉及 "\N{...}" 的弃用警告未正确实现。 他们
默认情况下没有警告(现在他们这样做了)并且不能通过“使用警告
FATAL => 'deprecated'"(现在他们可以)。

· 属性原型(%s) 丢弃同一个子对象中较早的原型属性

(W misc) 一个 sub 被声明为“sub foo :prototype(A) :prototype(B){}”,对于
例子。 由于每个 sub 只能有一个原型,因此较早的声明是
在应用最后一个时丢弃。

· %s 的 %s 中的 \0 字符无效:%s\0%s

(W 系统调用) 路径名或其他系统调用参数中嵌入的 \0 字符
产生截至 5.20 的警告。 \0 之后的部分以前被系统忽略
调用。

· 将非 Unicode 代码点 0x%X 与 Unicode 属性匹配; 可能不便携。

这将替换消息“代码点 0x%X 不是 Unicode,所有 \p{} 匹配失败;所有
\P{} 匹配成功”。

· %s 的原型中缺少“]”:%s

(W 非法原型) 分组以“[”开始,但从未以“]”结束。

· 控制流操作符可能存在的优先级问题

(W 语法) 控制流操作符的混合可能存在问题
(例如“返回”)和低优先级运算符,如“或”。 考虑:

sub { 返回 $a 或 $b; }

这被解析为:

sub { (return $a) 或 $b; }

这实际上只是:

子 { 返回 $a; }

使用括号或运算符的高优先级变体。

请注意,这也可能会被以下结构触发:

sub { 1 如果死了; }

· 后缀解引用是实验性的

(S Experimental::postderef) 如果您使用实验性的
后缀解引用语法。 如果您想使用
功能,但要知道这样做是在冒险使用实验性的
在未来的 Perl 版本中可能会更改或删除的功能:

没有警告“experimental::postderef”;
使用特征“postderef”,“postderef_qq”;
$ref->$*;
$aref->@*;
$aref->@[@indices];
... 等等 ...

· 原型 '%s' 被 %s 中的属性 'prototype(%s)' 覆盖

(W 原型) 在子名称和后面的括号中都声明了原型
通过原型属性。 括号中的原型没有用,因为它会
在使用之前被属性中的原型替换。

· 标量值@%s[%s] 最好写成 $%s[%s]

(W 语法)在标量上下文中,您使用了数组索引/值切片(由 % 表示)
选择数组的单个元素。 一般来说最好是要求一个标量
值(以 $ 表示)。 不同之处在于 $foo[&bar] 总是表现得像一个
标量,无论是在它返回的值中还是在评估其参数时,而
%foo[&bar] 为其下标提供了一个列表上下文,如果
你只期待一个下标。 在列表上下文中调用时,它还返回
索引(&bar 返回的内容)以及值。

· 标量值@%s{%s} 最好写成 $%s{%s}

(W 语法)在标量上下文中,您使用散列键/值切片(由 % 表示)来
选择散列的单个元素。 通常最好询问标量值
(以 $ 表示)。 不同之处在于 $foo{&bar} 总是表现得像一个标量,
无论是在它返回的值中还是在评估其参数时,@foo{&bar} 和
为其下标提供一个列表上下文,如果你
期望只有一个下标。 在列表上下文中调用时,它还返回键
除了价值。

· 不推荐将 $/ 设置为对 %s 的引用作为 slurp 的一种形式,将其视为 undef

· 意外退出 %u

(S) 出口() 被调用或脚本以其他方式优雅地完成时
在“PL_exit_flags”中设置了“PERL_EXIT_WARN”。

· 意外退出失败 %d

(S) 一个未捕获 模具() 在“PL_exit_flags”中设置“PERL_EXIT_WARN”时调用。

· 不推荐在变量名中使用文字控制字符

(D deprecated) 在源代码中使用文字控制字符来引用 ^FOO
变量,如 $^X 和 ${^GLOBAL_PHASE} 现在已弃用。 这只影响代码
像 $\cT,其中 \cT 是源代码中的一个控件(如“SOH”):${"\cT"} 和 $^T
保持有效。

· 贪婪修饰符的无用使用

这修复了 [Perl #42957]。

更改 现有 诊断
· 来自正则表达式引擎的警告和错误现在是 UTF-8 干净的。

· “未知开关条件”错误消息有一些细微的变化。 这个错误
当 "(?(foo))" 条件中存在未知条件时触发。 错误
用于阅读的消息:

未知的切换条件 (?(%s in regex;

但是 %s 可能是什么主要取决于运气。 对于“(?(foobar))”,你可能已经看到
“fo”或“f”。 对于 Unicode 字符,您通常会得到一个损坏的字符串。 这
消息已更改为:

正则表达式中的未知切换条件 (?(...));

此外,错误中的“<-- HERE”标记现在将指向正确的位置
正则表达式。

· "%s "\x%X" 未映射到 Unicode" 警告现在被正确列为严重
警告而不是致命错误。

· 在极少数情况下,可能会出现“无法将只读 REF 强制为字符串”
而不是习惯的“修改只读值”。 这个替代错误
消息已被删除。

·“*的歧义使用解析为运算符*”:这个和关于“%”和的类似警告
“&”过去常常出现在没有引用类型的运算符的某些情况下,
所以警告是完全错误的。 这已被修复 [perl #117535, #76910]。

· 关于畸形子程序原型的警告现在更加一致
原型被渲染。 其中一些警告会截断包含以下内容的原型
空值。 在其他情况下,一个警告会抑制另一个。 违法行为警告
如果坏字符出现在原型之前,则原型中的字符不再说“在 '_' 之后”
下划线。

· Perl 折叠规则对于 0x%X 不是最新的; 请使用 perlbug 实用程序
报告; 在正则表达式中; 由 <-- HERE 标记,单位为 m/%s/

此消息现在仅属于正则表达式类别,而不属于已弃用类别。
它仍然是一个默认的(即严重的)警告 [perl #89648]。

· %%s[%s] 在标量上下文中最好写成 $%s[%s]

现在,对于已知在标量中的任何 %array[$index] 或 %hash{key} 都会发生此警告
编译时的上下文。 以前的措辞是“标量值 %%s[%s]
写成 $%s[%s]”。

· 正则表达式无法识别切换条件; 由 <-- HERE 标记,单位为 m/%s/:

此诊断的说明已扩展到涵盖所有情况
可能会出现警告。 箭头指示器的定位问题也已
解决。

· “my($a?$b$c)”和“my(do{})”的错误信息现在提到了“conditional
表达式”和“do block”,而不是读取“不能声明为空”
在“我的”'中操作。

· 当“使用重新“调试””执行包含反向引用的正则表达式时,调试
输出现在显示正在匹配的字符串。

· 现在的致命错误消息““\c”后面的字符必须是 ASCII”已被改写
因为““\c”后面的字符必须是可打印的 ASCII 以强调在“\cX", X
必须是一个 打印 (非控制) ASCII 字符。

公用事业 更改


a2p

· 在开始之前尝试访问时,可能因逐一错误而导致崩溃
一个缓冲区已被修复。 [perl #120244]

二等分.pl

git二分工具 移植/bisect.pl 有很多改进。

它作为源代码分发的一部分提供但未安装,因为它不是
独立的,因为它依赖于从 git checkout 中运行。 还要注意的是
不尝试修复测试,更正运行时错误或安装有用的东西 -
它的目的是进行最小的更改以获得任何感兴趣的历史修订来构建
并尽可能接近“原样”运行,从而使“git bisect”易于使用。

· 可以选择运行超时的测试用例。

· 现在可以在干净的 git checkout 中就地运行。

· 可以在“valgrind”下运行测试用例。

· 可以在构建之前将用户提供的补丁和修复应用到源代码检出。

· 现在有修复功能,可以构建更多的 bleadperl 历史范围,
可用于查明错误或行为变化的根源。

查找2perl

· find2perl 现在处理“?” 正确使用通配符。 [perl #113054]

错误

· 错误 现在有一个“-p”选项,用于附加带有错误报告的补丁。

· perlbug 已被修改为提供带有 CRLF 行结尾的报告模板
视窗。 [perl #121277 ]

· perlbug 现在对报告的编码做出尽可能少的假设。
将来这可能会更改为默认情况下采用 UTF-8,但允许用户
覆盖。

配置 汇编


· 生成文件 为 SDBM_File 现在生成一个更好的 生成文件,这避免了比赛
并行构建期间的条件,这可能导致构建失败。 这是
最后一个已知的并行 make 问题(在 *nix 平台上),因此我们认为
并行制作现在应该总是没有错误。

· 安装程序安装工的选项处理已重构为使用 Getopt::Long。
两者都由 生成文件 “安装”目标,并且没有安装,所以这些
更改仅可能影响自定义安装脚本。

· 单字母选项现在也有长名称。

· 现在拒绝无效选项。

· 现在拒绝不是选项的命令行参数。

· 现在每个都有一个“--help”选项来显示使用信息。

所有有效记录调用的行为保持不变。

· 在可能的情况下,构建现在避免递归调用 使 当构建纯
Perl 扩展,无需从构建中删除任何并行性。 目前80左右
扩展可以直接由 make_ext.pl 工具,这意味着 80
的调用 使 和 160 次调用 小程序 不再制造。

· 在 GCC 或 Clang 下编译时,构建系统现在可以正常工作,并带有链接时间
启用优化(“-flto”选项)。 [perl #113022]

· 带有“d_libname_unique”的不同库基名。

使用此选项编译 perl 时,XS 模块的库文件被命名为
一些“独特”的东西——例如,Hash/Util/Util.so 变成
Hash/Util/PL_Hash__Util.so。 这种行为类似于当前发生的
VMS,并作为 Android 端口的基础。

·“sysroot”选项表示gcc和clang下的逻辑根目录。

使用此选项集构建时,Configure 和编译器都会搜索所有
这个新 sysroot 下的头文件和库,而不是 /.

如果交叉编译,这可以节省大量时间,但如果
您的工具链的文件具有非标准位置。

· 重新编译交叉编译模型。 有几个新选项,还有一些
向后不兼容的更改:

我们现在为要在主机上使用的 miniperl 和 generate_uudmap 构建二进制文件,而不是
比在目标上运行每个 miniperl 调用; 这意味着,除了“进行测试”,
一旦配置完成,我们就不再需要访问目标系统。 你可以提供
通过“hostperl”和“hostgenerate”选项配置已经构建的二进制文件。

此外,如果从 ASCII 主机定位 EBCDIC 平台,反之亦然,您将
需要使用“-Uhostgenerate”运行配置,以指示 generate_uudmap 应该
在目标上运行。

最后,还有一种方法可以在构建之后尽早结束配置
主机二进制文件,通过交叉编译而不指定“目标主机”。

不兼容的更改包括不再使用 xconfig.h、xlib 或 Cross.pm,因此
罐头配置文件和 Makefile 必须更新。

· 与上述相关,现在有一种方法可以指定 sh 的位置(或
等效)在目标系统上:“targetsh”。

例如,Android 在 /system/bin/sh 中有它的 sh,所以如果从一个更
带有 sh 的普通 Unixy 系统 / bin / sh的, "targetsh" 最终会变成 /system/bin/sh, 并且
"sh" 为 /bin/sh。

· 默认情况下, GCC 4.9 做了一些破坏 perl 的优化。 这 -fwrapv 选项
禁用这些优化(可能还有其他优化),因此对于 GCC 4.3 及更高版本(自
旧版本也可能存在类似的问题,但是 -fwrapv
在 4.3 之前坏了,优化可能不会消失), 配置 现在添加
-fwrapv 除非用户要求 -fno-wrapv, 禁用 -fwrapv
-fsanitize=未定义,这将溢出 -fwrapv 忽略运行时错误。
[perl #121505 ]

测试


· “test.valgrind” make 目标现在允许并行运行测试。 这个目标
允许 Perl 的测试套件在 Valgrind 下运行,它检测某些类型的 C
编程错误,尽管在运行时间上付出了巨大的代价。 在合适的硬件上,
允许并行执行可以节省大量额外成本。 [perl #121431]

· 各种测试 吨/移植/ 不再跳过 perl .git 目录是
在 perl 树之外并由 $GIT_DIR 指向。 [perl #120505]

· 当用户的交互式 shell 维护 $PWD 时,测试套件不再失败
环境变量,但 / bin / sh的 用于运行测试没有。

平台 帮助


全新 平台
Android
Perl 现在可以为 Android 构建,无论是本机还是通过交叉编译,用于
所有三种当前可用的架构(ARM、MIPS 和 x86),在广泛的范围内
版本。

比特里格
已为 OpenBSD 的一个分支 Bitrig 添加了编译支持。

FreeMinNT
增加了对 FreeMiNT 的支持,FreeMiNT 是 Atari ST 系统的免费开源操作系统和
它的继任者基于 Atari 正式采用的原始 MiNT。

群晖
Synology 以相对便宜的价格提供带有精益 Linux 发行版 (DSM) 的 NAS 盒
CPU(如 Marvell Kirkwood mv6282 - ARMv5tel 或 Freescale QorIQ P1022 ppc -
e500v2) 不适用于工作站或开发。 这些盒子现在应该构建。 这
基本问题是工具的非标准位置。

停产 平台
“sfio”
与支持“sfio”I/O 系统相关的代码已被删除。

Perl 5.004 添加了对使用“sfio”的原生 API 的支持,即 AT&T 的安全/快速 I/O
图书馆。 此代码仍然使用 v5.8.0 构建,尽管许多回归测试失败,
但是在 v5.8.1 发布之前无意中被破坏了,意味着它没有工作
从那时起发布的任何版本的 Perl。 十多年来,我们没有收到任何错误
对此进行报告,因此很明显没有人在任何设备上使用此功能
任何程度仍受支持的 Perl 版本。

美国电话电报公司 3b1
配置对 3b1 的支持,也称为 AT&T Unix PC(以及类似的 AT&T
7300),已删除。

DG / UX
DG/UX 是 Data General 出售的 Unix。 最后一次发布是在 2001 年 XNUMX 月。
在 Data General 自己的硬件上运行。

EBCDIC
在没有常规烟雾报告来源的情况下,旨在支持本机的代码
EBCDIC 平台将在 5.22.0 之前从 perl 中删除。

特定于平台
Cygwin的
· recv() 在连接的句柄上将填充返回的发件人地址
无论工作缓冲区中发生了什么。 recv() 现在使用一种解决方法
类似于 Win32 recv() 包装并返回空字符串时 recvfrom的(2)
不修改提供的地址长度。 [perl #118843]

· 修复了 Cygwin 1.7.28 上 cygwin.c 中的构建错误。

测试现在处理“cygserver”未运行时发生的错误。

GNU /赫德
构建不再需要 BSD 兼容库“libbsd”。

Linux
提示文件现在仅在还需要“libgdbm”本身时才查找“libgdbm_compat”。
没有后者,前者永远不会有用,在某些情况下,包括它
实际上可以阻止建筑。

Mac OS
构建系统现在尊重由运行的用户提供的“ld”设置 配置.

午夜BSD
“objformat”已从 MidnightBSD 的 0.4-RELEASE 版本中删除,并已被
在早期版本中弃用。 这导致构建环境错误
配置为“a.out”而不是“elf”。 这已经得到纠正。

混合端平台
在混合端平台上支持“打包”和“解包”操作的代码已经
移除。 我们相信 Perl 长期以来无法建立在混合端
架构(例如 PDP-11s),所以我们认为这种变化不会影响任何
能够构建 v5.18.0 的平台。

VMS
· "PERL_ENV_TABLES" 功能在 perl 启动时控制 %ENV 的数量
在 Perl 5.16.0 中被破坏,但现在已经修复。

· 跳过对遥控器的访问检查 打开目录(). [perl#121002]

· 检查“glob()”运算符返回的路径中的 glob 元字符具有
被替换为检查 VMS 通配符。 这节省了大量
一些不必要的“lstat()”调用使得一些简单的全局操作变成
速度提高 60-80%。

Win32
· Win32 上的“重命名”和“链接”现在设置 $! 适当时发送给 ENOSPC 和 EDQUOT。
[perl #119857]

· BUILD_STATIC 和 ALL_STATIC 生成文件选项,用于链接一些或(几乎)所有
静态扩展(进入 perl520.dll,也进入单独的 perl-static.exe)
因 MinGW 构建而损坏。 现在已经解决了这个问题。

ALL_STATIC 选项也得到了改进,包括编码和 Win32
扩展(适用于 VC++ 和 MinGW 构建)。

· 添加了对使用 Visual C++ 2013 构建的支持。 目前有两个
可能的测试失败(请参阅 perlwin32 中的“Testing Perl on Windows”)
希望尽快解决。

· 添加了对使用英特尔 C++ 编译器构建的实验性支持。 这
nmake makefile (win32/Makefile) 和 dmake makefile (win32/makefile.mk) 可以
用过的。 “nmake 测试”此时不会通过,因为 cpan/CGI/t/url.t.

· 用 perlfunc 中的“kill”和负信号杀死进程树,被破坏
从 5.18.0 开始。 在这个错误中,“kill”总是为负信号返回 0
即使对于有效的 PID,也没有终止任何进程。 这已被修复 [perl
#121230]。

· 在 Windows 上构建 perl 所花费的时间已显着减少(时间
通常可以看到节省 30-40% 的区域)通过减少数量,
通常失败,I/O 调用每个“require()”(对于 小程序 只要)。 [perl
#121119 ]

· 由于运行“make test”,大约 15 分钟的空闲睡眠被移除
用于测试的超时监视器无法取消的错误
测试完成,并且在运行下一个测试之前已经过了完整的超时时间
文件。 [perl #121395 ]

· 在没有伪分叉的情况下构建的 perl(伪分叉构建不受此影响)
bug),用“kill()”和一个负信号杀死进程树导致
“kill()”反转返回值。 例如,如果“kill()”杀死了1个进程
树 PID 然后它返回 0 而不是 1,如果“kill()”被传递 2 无效
PID 然后它返回 2 而不是 0。这可能是自
进程树杀死功能是在 Win32 上实现的。 现在已更正为
遵循记录在案的行为。 [perl #121230
]

· 在构建 64 位 perl 时,未初始化的内存读入 小程序, 用过的
在构建过程中,可能会导致 4GB wperl.exe 正在创建。 这有
现在已修复。 (注意 perl.exe所在 本身不受影响,但很明显
wperl.exe 会被完全破坏。)[perl #121471
]

· Perl 现在可以用 GCC 版本 4.8.1 从http://www.mingw.org>. 这个
之前由于错误的定义而被破坏 DLLMain() 在其中一个 perl 中
源文件。 早些时候 GCC 使用版本 4 时,版本也受到影响
w32api 包。 的版本 GCC 可从
<http://mingw-w64.sourceforge.net/> 没有受到影响。 [perl #121643
]

· 当 perl 构建在 FAT 驱动器上时,测试工具现在没有失败
NTFS 驱动器上的 Windows 操作系统。 [perl #21442
]

· 在克隆上下文堆栈时 叉子() 仿真, Perl_cx_dup() 会崩溃
访问包含 no 的上下文堆栈条目的参数信息
参数,如“&foo;”。 [perl #121721
]

· perl 引入 #113536
, 每个内存泄漏
从 32 开始,在大多数 Win5.18.0 Perls 上调用“系统”和反引号(“``”)
已修复。 内存泄漏仅在您启用伪叉时发生
构建的 Win32 Perl,并在 Server 2003 R2 或更新的操作系统上运行该构建。
WinXP SP3 上不会出现泄漏。 [perl #121676
]

WinCE的
· XS 模块的构建已基本恢复。 有几个还不能(还)
构建,但现在可以在 WinCE 上构建 Perl,只需几个
进一步的补丁(到 Socket 和 ExtUtils::MakeMaker),希望能被合并
很快。

· 现在可以通过运行在 WinCE 上无需用户干预而一次性构建 Perl
“nmake -f Makefile.ce all”。

已恢复对使用 EVC(嵌入式 Visual C++)4 构建的支持。 Perl 可以
也可以使用 Visual C++ 2005 或 2008 的智能设备构建。

内部 更改


· 匹配变量 $1、$2 等的内部表示已更改,$`、$&、
$'、${^PREMATCH}、${^MATCH} 和 ${^POSTMATCH}。 它使用略少的内存,避免
查找期间的字符串比较和数字转换,并且使用的行数减少了 23
C. 此更改不应影响任何外部代码。

· 数组现在在内部使用 NULL 来表示未使用的插槽,而不是 &PL_sv_undef。
&PL_sv_undef 不再被视为特殊值,因此 av_store(av, 0, &PL_sv_undef)
将导致该数组的元素 0 保存只读未定义标量。 "$array[0] =
any" 会发出咝咝声,而 "\$array[0]" 将比较等于 "\undef"。

· 返回的SV HeSVKEY_force() 现在正确反映了 UTF8ness
当该键未存储为 SV 时,底层哈希键。 [perl #79074]

· XS 代码可用的某些很少使用的函数和宏现在已弃用。
它们是:“utf8_to_uvuni_buf”(改用“utf8_to_uvchr_buf”),
“valid_utf8_to_uvuni”(使用“utf8_to_uvchr_buf”代替),“NATIVE_TO_NEED”(这确实
无论如何都不能正常工作)和“ASCII_TO_NEED”(无论如何这都不能正常工作)。

从这个版本开始,应用程序代码几乎不需要区分
平台字符集和Latin1之间,最低256个字符
Unicode 是基于。 新代码不应使用“utf8n_to_uvuni”(使用“utf8_to_uvchr_buf”
代替),也不是“uvuni_to_utf8”(使用“uvchr_to_utf8”代替),

· Makefile 快捷方式针对许多很少(或从未)使用的测试和分析
目标已被删除,或合并到唯一使用的其他 Makefile 目标中
他们。 具体来说,这些目标以及引用的文档都消失了
它们或解释如何使用它们:

check.third check.utf16 check.utf8 核心测试 minitest.prep
minitest.utf16 perl.config.dashg perl.config.daspg
perl.config.gcov perl.gcov perl.gprof perl.gprof.config
perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
perl.third perl.third.config perl.valgrind.config purecovperl
pureperl quantperl test.deparse test.taintwarn test.third
test.torture test.utf16 test.utf8 test_notty.deparse
test_notty.third test_notty.valgrind 测试_prep.third
test_prep.valgrind 酷刑测试 ucheck ucheck.third ucheck.utf16
ucheck.valgrind utest utest.third utest.utf16 utest.valgrind

仍然可以通过“手动”运行相关命令 - 没有底层
功能已被删除。

· 现在可以阻止 Perl 初始化区域设置处理。 大多数情况下,
Perl 不注意语言环境。 (请参阅 perllocale。)尽管如此,直到现在,在
启动时,它总是将语言环境处理初始化为系统默认值,以防万一
正在执行的程序最终使用语言环境。 (这是第一件事
早在 Perl 知道它是否真的需要之前,区域设置感知程序就应该这样做
与否。)除非将 Perl 嵌入到另一个应用程序中,否则这很有效。
想要一个不是系统默认值的语言环境。 现在,如果环境变量
“PERL_SKIP_LOCALE_INIT”是在Perl启动的时候设置的,这个初始化步骤
被跳过。 在此之前,在 Windows 平台上,唯一的解决方法是
不足之处是使用了内部 Perl 代码的黑客副本。 需要的应用
使用较旧的 Perl 可以发现他们正在使用的嵌入式 Perl 是否需要
通过测试 C 预处理器符号“HAS_SKIP_LOCALE_INIT”不是
定义。 [RT #38193]

· “BmRARE”和“BmPREVIOUS”已被删除。 它们没有在任何地方使用,也不是
API 的一部分。 对于 XS 模块,它们现在 #defined 为 0。

· "sv_force_normal",通常在只读值上发出嘶嘶声,用于允许只读
编译时要修改的值。 这已更改为 croak 只读
值不管。 此更改发现了几个核心错误。

· Perl 新的写时复制机制(现在默认启用),允许任何
“SvPOK”标量在复制时自动升级为写时复制标量。 一种
字符串缓冲区的引用计数存储在字符串缓冲区本身中。

例如:

$ perl -MDevel::Peek -e'$a="abc"; $b = $a; 转储 $a; 转储 $b'
SV = PV(0x260cd80) at 0x2620ad8
参考计数 = 1
标志 = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
当前 = 3
长度 = 16
COW_REFCNT = 1
SV = PV(0x260ce30) at 0x2620b20
参考计数 = 1
标志 = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
当前 = 3
长度 = 16
COW_REFCNT = 1

请注意,两个标量共享相同的 PV 缓冲区,并且 COW_REFCNT 大于
零。

这意味着希望修改 SV 的“SvPVX()”缓冲区的 XS 代码应该
首先调用“SvPV_force()”或类似方法,以确保有效(和非共享)缓冲区,并
之后调用“SvSETMAGIC()”。 事实上一直都是这样(例如
哈希键已经是写时复制); 这种变化只是将 COW 行为传播到
更广泛的SV。

一个重要的区别是,在 5.18.0 之前,共享哈希键标量曾经有
“SvREADONLY”标志集; 这已不再是这种情况。

这个新行为仍然可以通过运行来禁用 配置 -
-Accflags=-DPERL_NO_COW. 这个选项可能会在 Perl 5.22 中删除。

· “PL_sawampersand”现在是一个常数。 此变量提供的开关(到
根据是否看到 $& 启用/禁用预匹配副本)已被
删除并替换为写时复制,消除了一些错误。

仍然可以通过运行启用以前的行为 配置 -
-Accflags=-DPERL_SAWAMPERSAND.

· 函数“my_swap”、“my_htonl”和“my_ntohl”已被删除。 不清楚
为什么这些函数被标记为 A,API 的一部分。 XS 码不能调用它们
直接,因为它不能依赖它们被编译。 不出所料,CPAN 上没有代码
引用它们。

· “Perl_re_intuit_start()”正则表达式函数的签名已更改; 功能
正则表达式引擎插件结构中的指针“intuit”也相应地发生了变化。 一种
新参数,“strbeg”已添加; 这与同名的含义相同
“Perl_regexec_flags”中的参数。 以前直觉会尝试猜测开始
来自传递的 SV(如果有)的字符串,并且有时会出错(例如带有
超载 SV)。

· “Perl_regexec_flags()”正则表达式函数的签名已更改; 功能
正则表达式引擎插件结构中的指针“exec”也已更改为匹配。 这
“minend”参数现在具有“SSize_t”类型以更好地支持 64 位系统。

· XS 代码可以使用各种宏来改变字符或代码点的大小写(对于
例如“toLOWER_utf8()”)。 到目前为止,只有其中的几个被记录在案; 现在
它们应该优先用于调用底层函数。 见“字符
案例变化”在 perlapi 中。

· 代码在处理 uids 和 gids 时相当不一致。 有些地方认为他们
可以安全地存储在 UV 中,其他存储在 IV 中,其他存储在整数中。 四个新的宏是
介绍: SvUID(), sv_setuid(), SvGID()sv_setgid()

·“sv_pos_b2u_flags”已添加到API。 它类似于“sv_pos_b2u”,但
在 64 位平台上支持长字符串。

· "PL_exit_flags" 现在可以被 perl 嵌入器或其他 XS 代码使用来让 perl "警告"
或在尝试退出时“中止”。 [perl #52000]

· 使用“-Accflags=-PERL_BOOL_AS_CHAR”进行编译现在允许 C99 和 C++ 编译器
模拟 perl 为 C89 编译器所做的“bool”到“char”的别名。 [perl
第120314话

· perlapi 中“sv_2pv_flags”中的“sv”参数,perlapi 中“sv_2iv_flags”中的“sv”参数,
perlapi 中的“sv_2uv_flags”,perlapi 中的“sv_2nv_flags”及其旧包装器
sv_2pv、sv_2iv、sv_2uv、sv_2nv 现在非空。 现在传递 NULL 会崩溃。 什么时候
非 NULL 标记是在 5.9.3 中大量引入的,函数被标记为非
NULL,但自 5.0 alpha 2 中创建 SV API 以来,如果传递了 NULL,则
函数返回 0 或 false 类型的值。 支持“sv”参数的代码是
非 NULL 日期直接为 5.0 alpha 2,间接为 Perl 1.0(pre 5.0 api)。 这
缺少函数接受 NULL "sv" 的文档已在 5.11.0 中得到纠正
在 5.11.0 和 5.19.5 之间,函数被标记为 NULLOK。 作为优化
NULLOK 代码现在已被删除,函数再次变为非 NULL 标记,
因为核心 getter 类型的宏永远不会将 NULL 传递给这些函数并且会崩溃
在传递 NULL 之前。

将 NULL "sv" 传递给 sv_2*v* 函数的唯一方法是直接使用 XS 代码
调用 sv_2*v*。 这不太可能,因为 XS 代码使用 Sv*V* 宏来获取底层
SV 中的值。 导致 NULL "sv" 被传递给的一种可能情况
sv_2*v* 函数,是如果 XS 代码定义了它自己的 getter 类型 Sv*V* 宏,它检查
为 NULL before 通过公共 API Sv*OK* 取消引用和检查 SV 的标志
宏或直接使用私有 API "SvFLAGS",如果 "sv" 为 NULL,则调用
sv_2*v 函数使用 NULL 字面量或传递包含 NULL 值的“sv”。

· newATTRSUB 现在是一个宏

公共 API newATTRSUB 以前是私有函数的宏
Perl_newATTRSUB。 函数 Perl_newATTRSUB 已被删除。 newATTRSUB 现在是宏
不同的内部功能。

· “utf8n_to_uvchr()”引发的警告变化

此底层函数将 UTF-8 字符串的第一个字符解码为代码
观点。 “XS”级别的代码可以访问它,但不鼓励使用它
直接地。 有更高级别的函数调用它应该使用
相反,例如 perlapi 中的“utf8_to_uvchr_buf”。 不过,为了完整起见,这
记录对它的一些更改。 现在,在任何测试之前先进行畸形测试
对于其他潜在问题。 这些问题之一涉及的代码点如此之大以至于
它们从未出现在任何官方标准中(目前的标准已经缩放
支持早期版本中可接受的最高代码点)。 这是可能的(虽然
未在 CPAN 中完成)警告和/或禁止这些代码点,同时接受较小的
仍然高于合法 Unicode 最大值的代码点。 警告信息为
如果可以在机器上表示,这现在包括代码点。 以前它
始终显示原始字节,这对于不可表示的代码仍然如此
点。

· 影响可插拔正则引擎接口的正则引擎变化

许多过去通过 regexp.h 公开并用于填充 extflags 的标志
struct regexp 的成员已被删除。 这些领域在技术上是私有的
Perl 自己的正则表达式引擎,一开始就不应该暴露在那里。

受影响的标志是:

RXf_NOSCAN
RXf_CANY_SEEN
RXf_GPOS_SEEN
RXf_GPOS_FLOAT
RXf_ANCH_BOL
RXf_ANCH_MBOL
RXf_ANCH_SBOL
RXf_ANCH_GPOS

以及以下标志掩码:

RXf_ANCH_SINGLE
RXf_ANCH

所有都已重命名为 PREGf_ 等效项并移至 regcomp.h。

先前通过设置一个或多个 RXf_ANCH_ 标志(通过
RXf_ANCH 掩码)现在已被 extflags 中的 *single* 标志位替换:

RXf_IS_ANCHORED

以前用于设置这些标志的可插拔正则表达式引擎现在应该设置这个
单独标记。

· Perl 核心现在一致使用“av_tindex()”(“数组的顶部索引”)作为
“av_len()”的更明确的同义词。

· 晦涩的解释器变量“PL_timesbuf”预计将在早期被移除
5.21.x 开发系列,所以 Perl 5.22.0 不会提供给 XS 作者。
虽然该变量在 5.20.0 中仍然存在,但我们希望此提前警告
弃用将帮助任何使用该变量的人。

问题 修复


原价 表达式
· 修复了少数可能无法匹配或崩溃的正则表达式结构
perl 当匹配的字符串被分配在 2 位上的 32GB 行上方时
系统。 [RT #118175]

· 涉及解析“(?[...])”正则表达式的各种内存泄漏
构造已修复。

· “(?[...])”现在允许插入由“(?[...])”组成的预编译模式
包含括号内的字符类 ("$pat = qr/(?[ [a] ])/; /(?[ $pat ])/")。
以前,括号会混淆正则表达式解析器。

· 可能会出现“零长度表达式上的量词意外”警告消息
两次从 Perl v5.10 开始,用于同样包含交替的正则表达式
(例如,“a|b”)触发特里树优化。

· Perl v5.18 不经意间引入了一个错误,即插值上下混合
正则表达式中分级的 UTF-8 字符串可能会导致模式中出现格式错误的 UTF-8:
特别是如果“\x80..\xff”范围内的降级字符后跟 UTF-8
字符串,例如

utf8::upgrade( 我的 $u = "\x{e5}");
utf8::downgrade(my $d = "\x{e5}");
/$u$d/

[RT#118297]

· 在包含多个代码块的正则表达式中,$1、$2等的值,
由嵌套的正则表达式调用设置会从一个块泄漏到下一个块。 现在
这些变量总是引用开头的外部正则表达式
嵌入块 [perl #117917]。

· "/$qr/p" 在 Perl 5.18.0 中被破坏; “/p”标志被忽略。 这已被修复。
[perl #118213]

· 从 Perl 5.18.0 开始,像 "/[#](?{})/x" 这样的结构会错误地使用 "#"
解释为评论。 代码块将被跳过,未解析。 这已经
纠正。

· 从 Perl 5.001 开始,像 "/[#$a]/x" 或 "/[#]$a/x" 这样的正则表达式会有
它的“#”被错误地解释为注释,因此变量不会插入。
这已得到纠正。 [perl #45667]

· Perl 5.18.0 无意中将解引用的正则表达式 ("${ qr// }") 设为 false
布尔值。 这已被修复。

· 在正则表达式中使用“\G”,它不在模式的开头,是
现在稍微少了一些错误(尽管它仍然有些问题)。

· 正则表达式包括代码块(“/(?{...})/”)的地方,以及
常量重载触发了代码块的重新编译,第二个
编译没有看到它的外部词法范围。 这是 Perl 5.18.0 中的回归。

· 如果字符串改变表示形式,“pos”设置的字符串位置可能会发生变化
内部到或从 utf8。 这可能会发生,例如,引用具有
字符串重载。

· 引用具有相同参数的两个“pos”调用的返回值,以及
然后将引用分配给一个并将“undef”分配给另一个,可能会导致断言
故障或内存泄漏。

· 当@- 和@+ 的元素引用不存在的捕获时,它们现在可以正确更新。
以前,引用的元素 ("$ref = \$-[1]") 可能引用错误的匹配项
在随后的比赛之后。

· 解析正则表达式 backrefs(或模棱两可的 backref/octals)如 \123 的代码做了一个
简单 原子(),它可以在长数字字符串上环绕成负值,并且
导致分段错误。 现在已经解决了这个问题。 [perl #119505]

· 将另一个 typeglob 分配给 "*^R" 不再使正则表达式引擎
崩溃。

· "\N" 正则表达式转义,当使用时不带花括号(表示
"[^\n]"),如果 /x 下跟有空格,则忽略后面的 "*"。 它有过
自从 5.12.0 中引入了表示“[^\n]”的“\N”以来,就一直这样。

· 当使用宽字符作为分隔符时,“s///”、“tr///”和“y///”现在可以工作。
[perl #120463]

· 正则表达式中未终止 (?...) 序列的某些情况(例如,“/(?
已修复以产生正确的错误消息而不是“恐慌:内存包装”。
其他情况(例如,“/(?(/”) 尚未修复。

· 当对重载对象的引用从常规对象返回时
表达式“(??{...})”代码块,可能会发生不正确的隐式取消引用
如果内部引用先前已由代码块返回。

· 从“(??{...})”返回的绑定变量看到匹配变量的内部值
(即,块内任何匹配项中的 $1 等)在其 FETCH 方法中。 这是
如果对重载对象的引用是分配给
绑定变量。 相反,匹配变量在
FETCH 调用。

· 使用区域设置通过正则表达式修复意外污染。 以前,在一定条件下,
使用字符类可能会导致不应该的污染。 一些性格
类与语言环境有关,但在此补丁之前,有时会发生污染
即使对于不依赖于语言环境的字符类。 [perl #120675]

· 在某些条件下,如果在一个回顾断言中,Perl 会抛出一个错误
regexp,断言引用了一个命名的子模式,抱怨lookbehind是
当它不是变量时。 这已被修复。 [perl #120600]、[perl #120618]。 这
当前的修复可能会在未来得到改进。

· $^R 在初始化它的正则表达式之外不可用。 [perl
第121070话

· 大量的修复和重构 re_intuit_start() 被合并,亮点
是:

· 修复了编译正则表达式“/\x{100}[xy]\x{100}{2}/”时出现的 panic。

· 修复了对一个全局模式匹配时的性能回归
UTF-8 字符串。 [perl #120692]

· 修复了另一个匹配正则表达式的性能问题,如
"/ab.{1,2}x/" 对长 UTF-8 字符串会不必要地计算字节
大部分字符串的偏移量。 [perl #120692]

· 修复了在 HP- 上使用 GCC 构建时编译正则表达式时的对齐错误
用户体验 64 位。

· 在 64 位平台上,“pos”现在可以设置为高于 2**31-1 的值。 [perl
第72766话

Perl的 5 调试 -d
· 调试器的“man”命令已修复。 它在 v5.18.0 版本中被破坏了。 这
“man”命令的别名为“doc”和“perldoc”——现在都可以重新工作了。

· @_ 现在在调试器中正确可见,修复了引入的回归
v5.18.0 的调试器。 [RT #118169]

· 在写时复制构建下(5.20.0 的默认设置)“${'_<-e'}[0]”不再得到
弄坏了。 这是为调试器用于单行程序而保存的第一行输入
[perl #118627]。

· 在非线程构建上,设置 "${"_
导致“__FILE__”和一些错误消息产生损坏的字符串,并且不再
防止字符串 eval 中的“#line”指令将源行提供给
调试器。 线程构建不受影响。

· 从 Perl 5.12 开始,如果 -d 开关用于
#! 线。 现在他们是正确的。

· "*DB::DB = sub {} if 0" 不再阻止 Perl 的调试模式查找 "DB::DB"
之后宣布的潜艇。

· "%{'_<...'}" 散列现在在相应的 "@{'_<...'}" 上设置断点,而不是
任何数组 @DB::dbline 别名。 [perl #119799]

· 设置$DB::sub 时调用set-magic。 [perl #121255]

· 调试器的“n”命令现在尊重左值子程序并跳过它们[perl
#118839]。

词法 子程序
· 词法常量(“my sub a() { 42 }”)内联时不再崩溃。

· 编译时现在尊重附加到词法子程序的参数原型
不带括号的子调用。 以前,原型仅因
电话 - 括弧。 [RT #116735]

· 词法子程序中的语法错误与对相同子程序的调用相结合
不再导致编译时崩溃。

· 深度递归警告不再使词法子程序崩溃。 [RT #118521]

· dtrace 子条目探测现在可以与词法 subs 一起使用,而不是崩溃 [perl
#118305]。

· 取消定义一个可内联的词法子程序(“my sub foo() { 42 } undef &foo”)会
如果打开警告会导致崩溃。

· 用作继承方法的未定义词法子不再崩溃。

· 名为“CORE”的词法子的存在不再阻止 CORE:: 前缀从
加工。

全部 其他
· OP 分配代码现在在所有情况下为“struct”返回正确对齐的内存
pmop”。以前它只能返回与 4 字节边界对齐的内存,即
对于在某些 64 位平台上使用 32 位 IV 构建的 ithreads 不正确。 尤其,
这导致构建在 sparc GNU/Linux 上完全失败。 [RT #118055]

· 在标量上下文中评估大散列现在要快得多,因为使用的数量
散列中的链现在缓存为更大的散列。 较小的哈希值继续不
存储它并在需要时计算它,因为这样可以节省一个 IV。 那将是 1 IV
从散列构建的每个对象的开销。 [RT #114576]

· Perl v5.16 无意中引入了一个错误,即调用不可见的 XSUB
在编译时被视为左值并且可以分配给,即使
子程序不是左值子程序。 这已被修复。 [RT #117947]

· 在 Perl v5.18.0 dualvars 中,字符串部分为空字符串但非零
数字部分的数字开始被视为真。 在以前的版本中,他们
被视为 false,字符串表示优先。 老人
行为已恢复。 [RT #118159]

· 自 Perl v5.12 起,内联常量覆盖相同的内置关键字
name 已撤销“use subs”,导致随后提到的常量使用
而是内置关键字。 这已被修复。

· "-l $handle" 产生的警告现在适用于 IO refs 和 globs,而不仅仅是
全球参考。 该警告现在也是 UTF8-clean 了。 [RT #117595]

· “删除本地 $ENV{nonexistent_env_var}”不再泄漏内存。

· “排序”和“要求”后跟以“CORE::”为前缀的关键字现在将其视为
关键字,而不是作为子程序或模块名称。 [RT #24482]

· 通过某些难题,有可能导致当前包被释放。
某些操作符(“bless”、“reset”、“open”、“eval”)无法应对并且会崩溃。
它们变得更有弹性。 [RT #117941]

· 通过 glob-to-glob 分配别名文件句柄不会更新内部方法
如果存在与文件句柄同名的包,则正确缓存,导致
filehandle 方法调用转到包。 这已被修复。

· "./Configure -de -Dusevendorprefix" 没有默认。 [RT #64126]

· perldiag 中列出了“不太可能达成的声明”警告
“exec”-category 警告,但被“syntax”类别启用和禁用。 在
另一方面,“exec”类别控制了它的致命性。 现在完全是
由“exec”类别处理。

· “tr///”和“y///”的“替换列表比搜索列表长”警告没有
出现“/c”标志时出现更长的时间。 [RT #118047]

· NV 的字符串化不会被缓存,以便词法区域控制
小数点的字符串化。 [perl #108378] [perl #115800]

· 有几个与 Perl 的语言环境处理相关的修复。 perl #38193 是
在上面的“内部更改”中进行了描述。 还修复了#118197,其中基数
(小数点)字符必须是 ASCII 字符(这对某些
非西方语言); 和 #115808,其中返回失败时的“POSIX::setlocale()”
一个“undef”,即使这些警告是
启用。

· 编译一个“拆分”运算符,它的第三个参数是一个命名常量,计算结果为 0
不再导致常量的值发生变化。

· 用作“index”的第二个参数的命名常量不再被强制转换为
如果是引用、正则表达式、dualvar 等,则为字符串。

· 对用作第二个参数的未定义值求值的命名常量
“索引”在编译时不再产生“未初始化”警告。 还是会
在运行时生成它们。

· 当@INC 中的子程序返回标量时,引用的标量是
神奇地转换成一个 IO 的东西,可能会导致“奇怪的复制”错误,如果
该标量继续在其他地方使用。 现在 Perl 使用内部副本
标量代替。

· 优化了“排序”操作符的某些用途以就地修改数组,例如
“@a = 排序@a”。 在排序过程中,数组变为只读。 如果一个排序块
应该碰巧死了,那么即使在“排序”之外,数组也保持只读。 这
已修复。

· 排序块中的 $a 和 $b 别名为“排序”的实际参数,因此它们
可以通过这两个变量进行修改。 这并不总是有效,例如,对于
左值 subs 和 $#ary,可能还有许多其他运算符。 它现在有效。

· “排序”的参数现在都在列表上下文中。 如果调用“排序”本身
在空或标量上下文中,然后 一些,但不是全部,过去无效的参数
或标量上下文。

· U+00FF 以上 Unicode 字符的子程序原型在
封闭克隆。 这会发生在关闭词法变量的子程序中
在外面声明,并带有词法 subs。

· "UNIVERSAL::can" 现在以与方法调用相同的方式处理它的第一个参数:
具有非空 IO 槽的类型团和 glob 引用被视为句柄,并且
如果具有该名称的句柄,则字符串被视为文件句柄,而不是包
存在 [perl #113932]。

· 方法调用用于字符串化类型全局的类型全局(例如,“*ARGV->getline”)
然后再查一下。 结合 Perl 5.18.0 中的更改,这允许“*foo->bar”
调用“foo”包上的方法(如“foo->bar”)。 在某些情况下,它可能会导致
要在错误句柄上调用的方法。 现在 typeglob 参数被视为
句柄(就像 "(\*foo)->bar"),或者,如果它的 IO 插槽为空,则会引发错误。

· 将 vstring 分配给绑定变量或别名为 a 的子程序参数
不存在的散列或数组元素现在可以工作,无需将 vstring 展平为
常规字符串。

· “pos”、“tie”、“tied”和“untie”在子程序参数别名上不能正常工作
到不存在的哈希和数组元素 [perl #77814, #27010]。

· "=>" 粗箭头运算符现在可以引用内置关键字,即使它出现在
下一行,使其与处理其他裸词的方式保持一致。

· 通过“\&$glob”自动激活子程序存根开始导致 Perl 5.18.0 崩溃
如果 $glob 只是一个真实 glob 的副本,即一个具有 glob 的标量
分配给它。 这已被修复。 [perl #119051]

· Perl 过去常常在引用返回值时泄露一个实现细节
某些运算符的值。 "for ($a+$b) { warn \$_; warn \$_ }" 用来显示两个
不同的内存地址,因为“\”运算符正在复制变量。 在下面
线程构建,它也会发生在常量 (" (1) { ... }"). 这已经
固定的。 [perl #21979、#78194、#89188、#109746、#114838、#115388]

· 范围运算符“..”每次调用都返回相同的可修改标量,
除非它是“foreach”循环头中的唯一内容。 这意味着更改为
返回的列表中的值将在操作员下次访问时可见
执行。 [perl #3105]

· 常量折叠和子程序内联不再导致操作
通常返回新的可修改标量以返回只读值。

· "sub() { $some_variable }" 形式的闭包不再内联,导致
子程序调用者要忽略的变量的更改。 [perl #79908]

· 某些运算符(例如“ref”)的返回值有时会在
递归调用同一个子程序,导致内部调用修改值
在外部调用中由“ref”返回。 这已被修复。

· "__PACKAGE__" 和返回包名或哈希键的常量现在是一致的
只读。 在各种以前的 Perl 版本中,它们在某些情况下变得可变
的情况。

· 启用“使用一次”警告不再导致创建的存储循环崩溃
在编译时(“*Foo::Bar::Foo:: = *Foo::”)。

· 哈希键中使用的 undef 常量(“使用常量 u => undef; $h{+u}”)不再
在编译时产生“未初始化”警告。

· 在替换替换中修改替换目标不再导致
崩溃。

· 字符串 eval 中的第一条语句用于使用错误的编译指示设置
有时在不断折叠期间。 “eval 'uc chr 0xe0'”会随机选择
Unicode、字节和语言环境语义。 这已被修复。

·@INC过滤器返回值的处理(子程序返回的子程序在
@INC) 已以各种方式修复。 先前绑定的变量被错误处理,并且
将 $_ 设置为引用或 typeglob 可能会导致崩溃。

· “SvPVbyte”XS 函数已修复,可用于绑定标量返回
字符串以外的东西。 它曾经在“SvPV”的情况下返回 utf8
将。

· Perl 5.18.0 无意中使“--”和“++”在取消引用的正则上崩溃
表达式,并阻止“++”扁平化vstrings。

· 如果第一个参数是,“bless”不再因“无法祝福非参考值”而死亡
一个绑定的参考。

· 带有参数的“重置”不再跳过写时复制标量、正则表达式、
typeglob 副本和 vstrings。 此外,当遇到这些或只读值时,它
不再跳过任何具有相同名称的数组或散列。

· 带有参数的“重置”现在跳过别名为 typeglobs 的标量(“for $z (*foo) {
重置“z”}”)。以前它会损坏内存或崩溃。

· "ucfirst" 和 "lcfirst" 不尊重字节编译指示。 这是一个回归
从 Perl 5.12。 [perl #117355]

· 对“UNIVERSAL::DESTROY”的更改现在更新所有类中的DESTROY缓存,而不是
导致已经销毁对象的类继续使用旧的子类。
这是 Perl 5.18 中的回归。 [perl #114864]

· 弃用警告“无用使用'\';
不转义元字符 '%c'",在 Perl 5.18.0 中添加,已被删除。[perl
第119101话

· $^E 的值现在跨 Windows 上的信号处理程序保存。 [perl #85104]

· 词法文件句柄(如“打开我的 $fh...”)通常基于
当前包和变量的名称,例如“main::$fh”。 在递归下,
文件句柄丢失了名称的“$fh”部分。 这已被修复。

· XSUB 返回的未初始化值不再免于未初始化
警告。 [perl #118693]

· "elsif ("")" 不再错误地产生关于无效上下文的警告。 [perl
第118753话

· 将“undef”传递给子例程现在会导致@_ 包含相同的只读 undefined
“undef”返回的标量。 此外,“exists $_[0]”现在将返回 true 如果
“undef”是第一个参数。 [perl #7508, #109726]

· 将不存在的数组元素传递给子程序通常不会自动激活它
除非子程序修改了它的参数。 这不能正常工作
负索引和数组中不存在的元素。 该元素将
立即复活。 延迟的活化已扩展到与
那些。 [perl #118691]

· 将引用或全局变量分配给 $#foo 返回的标量 @foo 数组之后
被释放不再导致调试构建的断言失败和内存泄漏
定期构建。

· 在 64 位平台上,像 1..1000000000000 这样的大范围不再崩溃,而是吃掉
取而代之的是你所有的记忆。 [perl #119161]

· "__DATA__" 现在将 "DATA" 句柄放在正确的包中,即使当前
包已通过 glob 分配重命名。

· 当“die”、“last”、“next”、“redo”、“goto”和“exit”展开范围时,有可能
以递归方式调用“DESTROY”以调用当前正在执行的子程序或格式
退出。 在这种情况下,有时 sub 中的词法变量会开始
具有来自外部调用的值,而不是像它们应该的那样未定义。 这
已修复。 [perl #119311]

· ${^MPEN} 不再被视为 ${^MATCH} 的同义词。

· Perl 现在更努力地尝试在“(caller)[2]”中返回正确的行号。
[perl #115768]

· 多行引号类运算符中的行号现在可以正确报告。 [perl
第3643话

· 现在尊重嵌入在类似引号的运算符中的代码中的“#line”指令。

· 当有两个 here-doc 标记时,第二个 here-doc 中的行号现在是正确的
发生在同一行。

· Perl 5.18 中的优化做出了错误的假设,导致与
Devel::CallParser CPAN 模块。 如果模块已加载,则词法变量
在“my(...)”列表之后的单独语句中声明可能无法清除
范围退出。

· &xsub 和“goto &xsub”调用现在允许被调用的子程序自动激活元素
@_。

· 如果 *_ 未定义且没有 ARRAY 条目,&xsub 和“转到 &xsub”不再崩溃
(即@_ 不存在)。

· &xsub 和“goto &xsub”现在与绑定@_ 一起使用。

· 过长的标识符不再导致缓冲区溢出(和崩溃)。 他们开始了
在 Perl 5.18 中这样做。

· 警告“标量值@hash{foo} 更好地写成$hash{foo}”现在产生远
更少的误报。 特别是@hash{+function_returning_a_list} 和@hash{ qw
"foo bar baz" } 不再警告。 这同样适用于数组切片。 [perl #28380,
第114024话

· "$! = EINVAL; waitpid(0, WNOHANG);" 不再进入内部无限循环。
[perl #85228]

· 文件句柄重复中可能出现的分段错误已得到修复。

· @INC 中的子程序可以返回对包含初始值的标量的引用
文件的内容。 但是,如果不引用,该标量会过早释放
在其他地方,给出随机结果。

· "last" 不再返回相同语句迄今为止累积的值,修复
除其他事项外,“push @a,last”会尝试返回的长期错误
@a,在过程中像标量一样复制它并导致错误,“奇怪的
最后的 ARRAY 副本。” [perl #3112]

· 在某些情况下,关闭文件句柄打开管道到或从进程,
被复制到标准句柄中,将调用 perl 的内部 waitpid 包装器
pid 为零。 随着 [perl #85228] 的修复,这个零 pid 被传递给
“waitpid”,可能会阻塞进程。 这个等待进程零不再
发生。 [perl #119893]

· “select”用于在第四个(超时)参数上忽略魔法,导致效果
例如“选择”无限期地阻塞而不是预期的睡眠时间。 这有
现在已修复。 [perl #120102]

· 现在可以正确解析“for my class $foo”中的类名。 在这种情况下
类名的第二个字符后跟一个数字(例如'a1b'),这用于
给出错误“循环变量上缺少 $”。 [perl #120112]

· Perl 5.18.0 在“use strict”和“use integer”下意外禁止了“-bareword”。
这已被修复。 [perl #120288]

· 行首的“-a”(或带有任何不是文件测试的单个字母的连字符
运算符)不再产生错误的“使用没有括号的“-a”是
模棱两可”的警告。 [perl #120288]

· 左值上下文现在可以正确地传播到裸块和“if”和“else”块中
在左值子程序中。 以前,数组和散列有时会错误地
在左值列表上下文中返回时变平,否则可能会发生“奇怪的复制”错误。
[perl #119797]

· 左值上下文现在传播到“||”的分支和“&&”(和他们的
字母等价物,“或”和“和”)。 这意味着“foreach (pos $x || pos $y)
{...}" 现在允许通过 $_ 修改 "pos"。

·“stat”和“readline”记住最后使用的句柄; 前者为特殊的“_”
文件句柄,后者用于“${^LAST_FH}”。 "eval "*foo if 0"" 其中 *foo 是最后一个
传递给“stat”或“readline”的句柄可能会导致该句柄被遗忘,如果
手柄还没有打开。 这已被修复。

· 各种“delete $::{a}”、“delete $::{ENV}”等导致崩溃的案例已经
固定的。 [perl #54044]

· 设置 $! 在调用“require”之前访问 EACCESS 可能会影响“require”的行为。
这已被修复。

· “不能使用 \1 来表示表达式中的 $1”警告消息现在只出现在
替换的右侧(替换)部分。 以前它可能发生在代码中
嵌入在左侧,或任何其他类似引号的运算符中。

· 祝福成一个引用(“bless $thisref, $thatref”)早就被禁止了,但是
像 $/ 这样的第二个魔法标量和那些被绑定的标量是豁免的。 他们不再
是。 [perl #119809]

· 如果类参数是
一个带有陈旧方法缓存的祝福引用(即,其类已经定义了 subs
自上次方法调用以来)。 它们再次被禁止,如 5.16 中所示。

· "$x->{key}" 其中 $x 被声明为 "my Class $x" 不再崩溃,如果
Class::FIELDS 子程序存根已声明。

· @$obj{'key'} 和 "${$obj}{key}" 曾经免于编译时字段检查
(“没有这样的类字段”;见字段)但不再是。

· 一个不存在的具有大索引的数组元素传递给一个子例程,该子例程将
数组,然后尝试访问该元素不再导致崩溃。

· 声明一个名为 NEGATIVE_INDICES 的子程序存根不再使负数组
当前包是绑定数组类时,索引会崩溃。

· 在 CORE::GLOBAL:: 包中声明“require”、“glob”或“do”子程序存根
不再使对相应函数的调用编译崩溃。

· 将 CORE::GLOBAL:: 函数别名为常量在 Perl 5.10 中停止工作,但有
现在已修复。

· 当“`...`”或“qx/.../”调用“readpipe”覆盖时,双引号插值
现在发生了,就像没有覆盖的情况一样。 此前,存在
覆盖将使这些类似引号的运算符表现得像“q{}”,抑制
插值。 [perl #115330]

· "<<<`...`" here-docs (用反引号作为分隔符) 现在调用 "readpipe" 覆盖。
[perl #119827]

· "&CORE::exit()" 和 "&CORE::die()" 现在尊重 vmsish 提示。

· 取消定义触发 DESTROY 方法的 glob 取消定义相同的 glob 现在是
安全的。 它曾经产生“尝试释放未引用的全局指针”警告和
泄漏内存。

· 如果子程序重定义(“eval 'sub foo{}'”或“newXS”用于 XS 代码)触发
正在重新定义的 sub 上的 DESTROY 方法,并且该方法分配一个
子程序到同一个槽 ("*foo = sub {}"),$_[0] 不再指向一个
释放的标量。 现在 DESTROY 被延迟到新的子程序安装完成。

· 在 Windows 上,perl 不再调用 关闭句柄() 在插座手柄上。 这使得
通过删除某些不相关的错误句柄异常,在 Windows 上更容易调试。 它
还修复了导致套接字函数在 Perl 进程中随机失败的竞争条件
具有多个操作系统线程,以及可能的测试失败
分布/IO/t/cachepropagate-tcp.t。 [perl #120091/118059]

· 涉及 UTF-8 编码字符串的格式,或奇怪的变量,如关系、重载或
字符串化的引用(在最近的 perls 中,纯 NOK 变量)通常会做错
当 var 被视为字符串并反复切碎时,格式中的东西,如
“^<<<~~”之类的。 现在已经解决了这个问题。 [perl
#33832/45325/113868/119847/119849/119851]

· "semctl(..., SETVAL, ...)" 将信号量设置为所提供的前 32 位
整数而不是 32 位大端系统上的底部 64 位。 [perl #120635]

· "readdir()" 现在只设置 $! 错误。 $! 不再设置为“EBADF”时
除非系统调用设置 $!,否则从目录中读取终止的“undef”。 [perl
第118651话

· &CORE::glob 不再由于 perl 的堆栈获取而导致间歇性崩溃
损坏。 [perl #119993]

·“打开”加载模块的层(例如,“<:encoding(utf8)”)不再运行
由于堆栈损坏而导致崩溃的风险。

· Perl 5.18 通过查找 AUTOLOAD 中断了通过“->SUPER::foo”方法调用的自动加载
来自当前包而不是当前包的超类。 这已经
固定的。 [perl #120694]

· 一个长期存在的错误导致“do {} until CONSTANT”,其中常量为真
值,读取未分配的内存已解决。 这通常会发生在
语法错误。 在过去的 Perl 版本中,它会间歇性地崩溃。 [perl #72406]

· 修复 HP-UX $! 失败。 用户体验 错误() 为未知错误返回空字符串
代码。 这导致断言在调试构建下失败。 现在相反,
返回“$!”的字符串包含指示代码用于未知错误的文本。

· 现在可以正确处理@INC 的单独绑定元素(如“tie $INC[0]...”)。
以前,由这种绑定元素返回的 sub 是否会被视为 sub
取决于之前是否发生了 FETCH。

· 在 utf8 上使用相同的“getc”运算符后,字节大小的句柄上的“getc”
用于将字节视为 utf8 的句柄,导致行为不稳定(例如,格式错误
UTF-8 警告)。

· 格式参数行开头的首字母“{”总是被解释为
v5.18 之前的块的开始。 在 Perl v5.18 中,它开始被视为
一个模棱两可的标记。 解析器会猜测它是否应该是匿名的
散列构造函数或基于内容的块。 现在以前的行为有
已恢复。 [perl #119973]

· 在 Perl v5.18 中,“undef *_; goto &sub”和“local *_; goto &sub”开始崩溃。 这个
已修复。 [perl #119949]

· 反引号(“ `` ” 或“ qx// ”)与 Win32 上的多线程组合可能导致
在一个线程上发送到 stdout 的输出被外部命令的反引号捕获
在另一个线程中。

这也可能发生在伪分叉进程中,因为 Win32 的伪分叉是
以线程的方式实现。 [perl #77672]

· "open $fh, ">+", undef" 在设置 TMPDIR 时不再泄漏内存但指向一个
无法在其中创建临时文件的目录。 [perl #120951]

· " for ( $h{k} || '' ) " 不再自动激活 $h{k}。 [perl #120374]

· 在 Windows 机器上,Perl 现在模拟 POSIX 使用环境的语言环境
初始化。 以前,环境被忽略。 见“环境”
本地化。

· 修复了销毁自引用 GLOB 时发生的崩溃。 [perl #121242]

已知的 问题


· 已知 IO::Socket 在 AIX 5.3 上测试失败。 有补丁
在请求跟踪器中,#120835,
这可能适用于未来的版本。

· 已知以下模块在使用此版本的 Perl 时测试失败。
补丁已经提交,所以希望很快会有新版本:

· Data::Structure::Util 0.15 版

· HTML::StripScripts 1.05 版

· 列表::收集 0.08 版。

讣告


里约热内卢 27 岁的戴安娜·罗莎 (Diana Rosa) 于 10 年 2014 月 XNUMX 日与
她一直挂在电脑屏幕上的毛绒骆驼。 她是一个热情的
Perl 黑客,热爱这门语言及其社区,从未错过 Rio.pm 活动。
她是一位真正的艺术家,热衷于编写代码、唱咏叹调和涂鸦
墙壁。 我们永远不会忘记你。

格雷格·麦卡罗尔于 28 年 2013 月 XNUMX 日去世。

格雷格因许多充分的理由而广为人知。 他是第一届的组织者之一
YAPC::Europe,以一场计划外的拍卖结束,他疯狂地试图
筹集额外资金以避免会议亏损。 是格雷格弄错了
晚到一个星期参加伦敦下午的会议; 几年后,他是那个卖掉
在 YAPC::Europe 拍卖会上选择正式会议日期,并最终成为光荣的
作为 london.pm 的领导者,他继承了他创造的无礼的混乱。

总是乐于助人、友好和开朗乐观,你会被错过,但永远不会
忘记了。

致谢


Perl 5.20.0 代表自 Perl 12 和
包含来自 470,000 个作者的 2,900 个文件的大约 124 行更改。

不包括自动生成的文件、文档和发布工具,大约有
对 280,000 个 .pm、.t、.c 和 .h 文件进行了 1,800 行更改。

由于充满活力的用户社区,Perl 继续蓬勃发展到它的第三个十年
和开发商。 已知以下人员贡献了以下改进:
成为 Perl 5.20.0:

Aaron Crane、Abhijit Menon-Sen、Abigail、Abir Viqar、Alan Haggai Alavi、Alan Hourihane、
亚历山大·沃罗诺夫、亚历山大·乔尔尼、安迪·多尔蒂、安诺·西格尔、亚里士多德·帕加尔齐斯、
Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, Brian Childs, Brian Fraser, Brian
Gottreu、Chris 'BinGOs' Williams、Christian Millour、Colin Kuskie、Craig A. Berry、Dabrien
'Dabe' Murphy, Dagfinn Ilmari Mannsaaker, Daniel Dragan, Darin McBride, David Golden,
大卫·利德比特、大卫·米切尔、大卫·尼科尔、大卫·斯坦布伦纳、丹尼斯·卡尔斯梅克、
多米尼克·哈格里夫斯、艾德·阿维斯、埃里克·布赖恩、埃文·扎克斯、克里斯托莫斯神父、弗洛里安·拉格维茨、
弗朗索瓦·佩拉德、加文·雪莱、Gideon Israel Dsouza、Gisle Aas、Graham Knop、H.Merijn
Brand、Hauke D、Heiko Eissfeldt、Hiroo Hayashi、Hojung Youn、James E Keenan、Jarkko
希塔涅米、杰瑞·D·海登、杰西·罗宾逊、杰西·卢尔斯、约翰·弗罗曼斯、约翰·加德纳
迈尔斯、约翰·古德伊尔、约翰·P·林德曼、约翰·皮科克、卡夫卡、刘康敏、凯伦
埃瑟里奇、卡尔·威廉姆森、凯迪·金、肯特·弗雷德里克、凯文·道森、凯文·法尔科内、凯文
莱德、里昂·蒂默曼斯、卢卡斯·迈、马克·辛普森、马塞尔·格鲁瑙尔、马可·皮勒博姆、马库斯
霍兰-莫里茨、马克·杰森·多米纳斯、马丁·麦格拉思、马修·霍斯法尔、麦克斯·迈舍因、迈克
多尔蒂、莫里茨·伦茨、内森·格伦、内森·特拉普扎诺、尼尔·鲍尔斯、尼尔·威廉姆斯、
Nicholas Clark、Niels Thykier、Niko Tyni、Olivier Mengue、Owain G. Ainsworth、Paul Green、
保罗·约翰逊、彼得·约翰·阿克拉姆、彼得·马蒂尼、彼得·拉比森、彼得·比萨克斯、菲利普
布兰、菲利普·冈瑟、彼得·罗萨蒂奇、拉斐尔·加西亚-苏亚雷斯、雷尼·厄本、鲁本
托马斯、里卡多·西涅斯、​​鲁斯兰·扎基洛夫、谢尔盖·阿列克谢耶夫、白方健太郎、什洛米·菲什、
Slaven Rezic、Smylers、Steffen Mueller、Steve Hay、Sullivan Beck、Thomas Sibley、Tobias
莱奇、托比·英克斯特、松野德弘、汤姆·克里斯蒂安森、汤姆·胡金斯、托尼·库克、维克多
叶菲莫夫、维克多·图尔斯基、弗拉基米尔·季莫费耶夫、YAMASHINA Hio、伊夫·奥顿、泽夫拉姆、兹班
Ambrus, AEvar Arnfjoer` Bjarmason。

上面的列表几乎肯定是不完整的,因为它是自动生成的
版本控制历史。 特别是,它不包括(非常
感谢)向 Perl 错误跟踪器报告问题的贡献者。

此版本中包含的许多更改源自包含在
Perl 的核心。 我们感谢整个 CPAN 社区帮助 Perl 蓬勃发展。

有关所有 Perl 历史贡献者的更完整列表,请参阅 作者
Perl 源代码分发中的文件。

报告仪表板 错误


如果你发现你认为是一个错误,你可以查看最近发布到
comp.lang.perl.misc 新闻组和 perl 错误数据库位于 http://rt.perl.org/perlbug/ .
也可能有资料 http://www.perl.org/ ,Perl 主页。

如果您认为您有未报告的错误,请运行随附的 perlbug 程序
你的释放。 确保将您的错误缩减为一个很小但足够的测试用例。 你的错误
报告,连同“perl -V”的输出,将被发送到 [电子邮件保护] 成为
由 Perl 移植团队分析。

如果您报告的错误具有安全隐患,因此不适合
发送到公开存档的邮件列表,然后请将其发送至
[电子邮件保护]. 这指向关闭订阅未归档邮件
列表,其中包括所有核心提交者,他们将能够帮助评估影响
问题,找出解决方案,并帮助协调补丁的发布
在支持 Perl 的所有平台上缓解或修复问题。 请只
将此地址用于 Perl 核心中的安全问题,而不是单独用于模块
分布在 CPAN 上。

使用 onworks.net 服务在线使用 perl5200delta


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    认证通行证
    认证通行证
    AuthPass 是一个开源密码
    经理支持流行和
    经过验证的 Keepass(kdbx 3.x 和 kdbx 4.x ...
    下载授权通行证
  • 2
    ZABBIX
    ZABBIX
    Zabbix 是企业级开放
    源分布式监控解决方案
    旨在监控和跟踪
    网络的性能和可用性
    服务器、设备...
    下载 Zabbix
  • 3
    KDiff3
    KDiff3
    此存储库不再维护
    并用于存档目的。 看
    https://invent.kde.org/sdk/kdiff3 for
    最新的代码和
    https://download.kde.o...
    下载 KDiff3
  • 4
    USB加载器GX
    USB加载器GX
    USBLoaderGX 是一个 GUI
    Waninkoko 的 USB Loader,基于
    libwiigui。 它允许上市和
    推出 Wii 游戏、Gamecube 游戏和
    Wii 和 WiiU 上的自制软件...
    下载 USBLoaderGX
  • 5
    火鸟
    火鸟
    Firebird RDBMS 提供 ANSI SQL 特性
    & 在 Linux、Windows 上运行 &
    几个 Unix 平台。 特征
    出色的并发性和性能
    & 力量...
    下载火鸟
  • 6
    KompoZer首
    KompoZer首
    KompoZer 是一个所见即所得的 HTML 编辑器,使用
    Mozilla Composer 代码库。 作为
    Nvu 的开发已停止
    2005 年,KompoZer 修复了许多错误和
    增加了一个...
    下载 KompoZer
  • 更多 ”

Linux 命令

Ad