perl583delta - perl v5.8.3 的新功能
本文档描述了 5.8.2 版本和 5.8.3 版本之间的差异。
如果您要从早期版本(如 5.6.1)升级,请先阅读 perl58delta,其中描述了 5.6.0 和 5.8.0 之间的差异,以及 perl581delta 和 perl582delta,其中描述了 5.8.0、5.8.1 和 5.8.2 之间的差异。
与 5.8.2 没有不兼容的更改。
现在,绑定哈希可以使用 SCALAR
方法。当绑定哈希在标量上下文中使用时,例如
if (%tied_hash) {
...
}
旧的行为是 %tied_hash 会返回在哈希绑定之前(通常为 0)该哈希返回的值。在没有 SCALAR 方法的情况下,新行为是在 each
迭代过程中返回 TRUE,否则调用 FIRSTKEY 检查哈希是否为空(确保后续的 each
也将从调用 FIRSTKEY 开始)。有关完整细节和注意事项,请参阅 "perltie 中的 SCALAR"。
提供了一个函数 again
来解决不同目录中的模块希望使用 FindBin 的问题。
现在可以将引用弱化为只读值。
cond_wait
有一个新的两个参数形式。添加了 cond_timedwait
。
find2perl
现在默认情况下假设 -print
。以前,需要显式指定它。
一个新的实用程序 prove
使得在命令行运行单个回归测试变得容易。prove
是 Test::Harness 的一部分,早期 Perl 版本的用户可以从 CPAN 安装它。
文档在某些地方进行了修改,以生成更标准的手册页。
特殊代码块(BEGIN、CHECK、INIT、END)的文档已改进。
Perl 现在可以在 OpenVMS I64 上构建
对 UTF8 字符串使用 substr() 可能会导致对该字符串的后续访问返回垃圾。这是由于缓存了不正确的 UTF8 偏移量,现在已修复。
当同一个 join() 语句用于处理先前处理过 UTF8 数据的 8 位数据时,join() 可能会返回垃圾,因为该语句临时工作区的标志没有正确重置。现在已修复。
$a .. $b
现在在 $a 或 $b 为 undef
时将按预期工作。
使用 Unicode 键绑定哈希现在应该可以正常工作。
读取 $^E 现在会保留 $!。之前,实现 $^E 的 C 代码没有保留 errno
,因此读取 $^E 可能会导致 errno
以及 $! 意外更改。
可重入函数将(再次)与 C++ 一起使用。5.8.2 引入了一个错误修复,意外地破坏了用 C++ 编写的 Perl 扩展的编译。
致命错误“DESTROY 创建了对已死对象的新的引用”现在已在 perldiag 中记录。
哈希代码已重构以减少源代码重复。外部接口保持不变,除了上面描述的错误修复之外,行为应该没有变化。
hv_clear_placeholders
现在是 perl API 的一部分。
一些 C 宏已被整理。特别是创建临时局部变量的宏现在更具防御性地命名这些变量,这应该避免名称冲突的错误。
<signal.h> 现在始终包含。
Configure
现在无论变量的值如何都会调用回调。以前,回调只在 case $variable $define)
分支中调用。此更改应该只影响编写配置提示文件的平台维护人员。
回归测试 ext/threads/shared/t/wait.t 在早期 RedHat 9 和 HP-UX 10.20 上失败,因为它们的线程实现存在错误。RedHat 用户应该查看 https://rhn.redhat.com/errata/RHBA-2003-136.html 并考虑升级他们的 glibc。
Windows 上尚不支持分离线程,因为它们可能会导致内存访问冲突问题。
在 suidperl
中打开脚本时存在已知的竞争条件。suidperl
默认情况下既不构建也不安装,并且自 perl 5.8.0 以来已被弃用。建议您用 sudo 等工具(http://www.courtesan.com/sudo/)替换 suidperl 的使用。
我们积压了大量未解决的错误。处理错误和错误报告是一项乏味的工作;不是理想的志愿者工作,但这是我们所拥有的一切。
perl5 开发团队正在实施更改以帮助解决此问题,这些更改将在 2004 年初生效。
下一个维护版本 (5.8.4) 的代码冻结时间为 2004 年 3 月 31 日,预计在 4 月中旬发布。类似地,5.8.5 的冻结时间将在 6 月底,并在 7 月中旬发布。
Iain 'Spoon' Truskett,Perl 黑客,perlreref 作者和 CPAN 贡献者,于 2003 年 12 月 29 日突然去世,享年 24 岁。我们将怀念他。
如果您发现您认为是错误的内容,您可以查看最近发布到 comp.lang.perl.misc 新闻组和 http://bugs.perl.org 上的 Perl 错误数据库的文章。您也可以在 Perl 主页 https://www.perl5.cn 上找到信息。
如果您认为您遇到了未报告的错误,请运行您发布版本中包含的 perlbug 程序。请务必将您的错误缩减为一个微小但足够的测试用例。您的错误报告以及 perl -V
的输出将被发送到 [email protected],由 Perl 移植团队进行分析。您可以在 http://bugs.perl.org/ 上浏览和搜索 Perl 5 错误。
有关更改的详细信息,请参阅 Changes 文件。
有关如何构建 Perl 的信息,请参阅 INSTALL 文件。
有关一般信息的说明,请参阅 README 文件。
有关版权信息的说明,请参阅 Artistic 和 Copying 文件。