本周在 p5p 1999/12/05

注释

我还在从连续三次旅行中恢复。我希望周日能恢复正常。

元信息

您可以通过发送空消息到 [email protected] 订阅本摘要的电子邮件版本。

请将更正和补充发送到 [email protected],其中 YYYYMM 是当前年份和月份。

m//g 在列表上下文

Ralph Corderoy 报告了一个非错误:``将 /gx 正则表达式赋给列表会破坏后续正则表达式中的 \G。”他的例子大致如下

    $s = '123456';
    ($a, $b) = $s =~ /(.)(.)/g;    # line 2
    ($c, $d) = $s =~ /\G(.)(.)/g;  # line 3

他希望 $c 包含 3,而 $d 包含 4。相反,它们包含 1 和 2。

这里发生了什么?在标量上下文中,m//g 找到一个匹配项,并从它上次离开的地方开始。然而,在列表上下文中,它找到所有剩余的匹配项,并返回所有结果列表。上面第二行匹配并生成了列表 (1,2,3,4,5,6)。然后将这个列表赋值给 $a$b,丢弃了 3、4、5 和 6;然后第三行的匹配再次从头开始。

这让我想起了 Randal Schwartz 在 1999 年 10 月的一个类似的投诉,我当时没有提到。

Ilya Zakharevich:我记得有一些讨论,要使列表上下文中的 m//gc 有不同的行为。结果如何?

显然结果是它被遗忘了。最好重新打开它。正如 Ralph 所说,“/g 意味着两件事(许多匹配和启用 \G),它意味着你无法仅仅启用 \G。”

他的第二封邮件非常清楚地说明了问题,并提出了一种替代方案。 阅读更多。

eof() 在输入的开始处

Ralph Corderoy 还报告了 eof() 运算符中的一个错误。 eof() 获得了我的“本月晦涩特征”奖项。它与没有括号的 eof 不同,因为 eof 本身测试的是最后读取的文件句柄,而带有空括号的 eof 测试的是特殊的空文件句柄,即由 <> 读取的文件句柄。无论如何,现在的问题是。如果你在读取任何输入之前调用 eof(),它会产生真值,而 Ralph 认为它应该产生假值

    plover% perl -le 'print eof()'
    1

随后,许多人发表了关于为什么这是正确行为、文档行为或 Ralph 应如何解决的论点,或者将问题与普通的 eof 混淆。

Ralph:eof(),与神奇的 <> 相关联,难道不应该有自己的一点点魔法并触发来自 <> 的第一个 getc+ungetc 吗? Mb>Larry: 我认为这很有道理,就像 eof() 一直有道理一样。

Sarathy 报告说,eof() 并没有按照文档所述的行为,实际上它甚至适用于不是 ARGV 的最少读取的文件句柄。然后他提供了一个补丁,使它按文档所述的行为,并修复了 Ralph 的错误。

影子密码继续

关于 Perl 的 getpw* 函数在带有影子密码文件的系统上的行为,我们继续了上周的讨论。我说这周会跟进,但我认为上次发布的总结已经足够。人们就第 1 所学校与第 2 所学校进行了争论。上周的总结。

Perl、EBCDIC 和 Unicode

Geoffrey Rommel 询问有关 Perl 中 Unicode 支持的文档,以便他可以了解其 Convert::IBM390 模块的影响。他得到了两个出色的回应:James Briggs 正在编写一份名为 `Perl, Unicode and I18N’ 的文档,他预计在 1 月 7 日完成。

Peter Prymmer 发布了一些链接和指向相关邮件列表的指针。

他还建议将 utf8 预言的技巧改编为提供类似的 utfebcdic 预言,这将启用 EBCDIC 内部表示。

lock 关键字

Dan Sugalski 指出,如果存在任何全局变量 main::lock(即使是标量),则 lock 关键字会被解释为一个函数名。在这种情况下,将调用 main::lock 函数。Sarathy 提供了一个补丁,它根据子程序 main::lock 的存在性在编译时进行判断。

Safe::Hole

几周前,我报道了一个新模块,Safe::Hole。Mike Heins 为它发布了一份热烈的证词,所以我再次提到了它。

修改 xsubpp

早在 11 月初,我报道了

Ilya 提交了一个 针对 xsubpp 的补丁,该补丁将 XSUB 的值返回语义更改为更高效。由于几乎所有的 XSUB 都会受到 影响,因此需要进行广泛的测试。

Sarathy 说这已经足够冒险,应该只在明确请求时启用;Ilya 提出反对意见,认为它需要进行广泛的测试,如果只通过命令行参数启用,则不会进行广泛的测试。

Nick Ing-Simmons 随后表示愿意用 Tk 测试它,但我没有看到结果。Andreas K&omul;nig 用许多重要的模块(包括 Tk)进行了测试,并报告说它没有造成任何已存在的问题。

Euphoria

Simon Cozens 报道说 Freshmeat 宣布了一种编程语言,名为 `Euphoria’,它声称是 `简单、灵活、易于学习,并且比所有流行的解释性语言都要快’。(不幸的是,没有 URL,只是在 11 月 29 日的 Freshmeat 上提到。)Larry 说这些基准测试有些过分。

Talarian SmartSockets

这听起来像是一个笑话,不是吗?但 Tim Bunce 想知道是否有一个 Perl 接口用于 Talarian SmartSockets,无论那是什么。如果有人知道,请给 Tim 发邮件,或者将你的消息发送给我,我会转达。

perlxstutperlxs 增加功能

Ilya 对 perlxstut 手册页进行了重大补充。他添加了一个关于文档中示例故障排除的章节,以及一些有关如何检测旧版本 Perl 的笔记。他还添加了大量有关 .xs 文件内容和生成的 .c 文件的内容的细节。

perlxstut 的更改

perlxs 的更改

Sarathy 编辑了 perlxs 中的散文并添加了一些额外的文本。他还建议可以让其他人再次审查。

重置 umask

诺伯特·戈伊弗特报告了ExtUtils::Install处理设置umask值的方式中存在的一个bug。这引发了对为什么ExtUtils::Install最初要设置umask的简短讨论,因此专门覆盖了运行脚本的人指定的权限策略。萨拉蒂同意,并修补了installmaninstallperlExtUtils/Install.pmExtUtils/Manifest.pm,使umask保持不变。然而,他表示,正确的做法是这些程序和模块检查不适当的umask值,并在设置为可疑值时发出警告。他要求一个可以实现这一点的补丁,但没有人贡献。尼克·英格-西蒙斯建议了一种替代方法:Configure可以询问类似的问题。

    Should I honor your umask (currently 060) during installs?

邮件列表存档不可用

维护www.xray.mpe.mpg.de上p5p邮件列表存档的阿基姆·博内特报告称,从12月31日到1月2日之间将不可用。查伊姆·弗伦克尔指出,该列表正在www.egroups.com存档。

Perl 艺术

不久前,我报告了一个娱乐。从那时起,迈克尔·亨宁已经制作了一个骆驼和一个骆驼

浮点数

伊利亚发布了他推荐给对浮点数感兴趣的人的一些网络资源的位置

Ilya 的补丁开发继续

萨拉蒂拒绝了伊利亚的PREPARE补丁。他对它做了一些修改,但并非所有的修改都符合他的要求。此工作的早期摘要

萨拉蒂还发现了伊利亚的正则表达式优化补丁的一个失败案例。

伊利亚用他的新、更小的XSLoader.pm替换了Dynaloader.pm,至少在一个例子中产生了许多警告。此工作的早期摘要

我急切地期待着进一步了解,以便看到伊利亚接下来做了什么。

关于错误报告的一则注释

这个条目主要因为我认为它很有趣。

有人报告了Perl中的core-dumping错误,并为了遵守perlbug中的要求提供产生错误所需的最小代码子集,封装了18个文件,总计2,725行。

给未来使用perlbug的用户:这太多了。提交不应超过100行,不超过三个文件;更好的是,一个文件包含10行。

各种

大量错误报告、错误修复、非错误报告、问题和答案。这次没有垃圾邮件,尽管有一小部分应得的指责。

直到下次(可能是星期五)为止,我仍然是,您谦卑而顺从的仆人,


马克-贾森·多米努斯

标签

反馈

这篇文章有什么问题吗?请在GitHub上通过GitHub打开一个问题或拉取请求来帮助我们。