本周在 p5p 1999/12/05
- 注释
- 元信息
m//g
在列表上下文eof()
在输入的开始处- 影子密码继续
- Perl、EBCDIC 和 Unicode
lock
关键字Safe::Hole
- 修改
xsubpp
- Euphoria
- Talarian SmartSockets
perlxstut
和perlxs
增加功能- 重置
umask
- 邮件列表存档不可用
- Perl 艺术
- 浮点数
- Ilya 的补丁开发继续
- 关于错误报告的一则注释
- 各种
注释
我还在从连续三次旅行中恢复。我希望周日能恢复正常。
元信息
您可以通过发送空消息到 [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 发邮件,或者将你的消息发送给我,我会转达。
perlxstut
和 perlxs
增加功能
Ilya 对 perlxstut
手册页进行了重大补充。他添加了一个关于文档中示例故障排除的章节,以及一些有关如何检测旧版本 Perl 的笔记。他还添加了大量有关 .xs
文件内容和生成的 .c
文件的内容的细节。
Sarathy 编辑了 perlxs
中的散文并添加了一些额外的文本。他还建议可以让其他人再次审查。
重置 umask
诺伯特·戈伊弗特报告了ExtUtils::Install
处理设置umask
值的方式中存在的一个bug。这引发了对为什么ExtUtils::Install
最初要设置umask
的简短讨论,因此专门覆盖了运行脚本的人指定的权限策略。萨拉蒂同意,并修补了installman
、installperl
、ExtUtils/Install.pm
和ExtUtils/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打开一个问题或拉取请求来帮助我们。