本周p5p动态 1999/11/28

备注

这份报告非常晚,因为我从11月26日至29日在伦敦,然后我回来后,我必须为我在12月6日至8日在芝加哥讲授的课程准备课程材料,然后我从那回来后,我必须为我在12月14日至16日在纽约讲授的课程准备课程材料。然后我必须恢复。现在我将尝试赶上报告。我为延误道歉。

新元信息

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

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

线程模型讨论

在上次报告中,我发布了Dan Sugalski对当前线程模型以及将在5.005_53中使用的新模型的解释。(在这里。)

这重新引发了关于新模型可行性的辩论,Dan、Sarathy和Ilya就此进行了中等长度的讨论。辩论集中在当您在新的线程/进程中分叉时有多少东西会被克隆。以下是我可能过于简短的总结:在新模型下,当您启动一个新的线程时,Perl堆栈会被克隆,每个线程都会得到一个单独的克隆。但是,您也可以请求类似 fork() 的语义,在这种情况下,所有全局变量也会被克隆。这将允许在没有 fork() 的Windows平台上通过线程模拟 fork()。在任何一种情况下,只读的op树在线程之间共享。

辩论集中在需要克隆的大量数据量。Sarathy声称,即使在 fork 的情况下,op树也比全局数据大8倍。Sarathy声称,即使在 fork 的情况下,op树也比全局数据大8倍。

整个讨论非常有趣,值得一读。讨论的顶部在这里。

如果您对Perl线程模型的变化感兴趣,那么阅读这个和随后的讨论是值得的。

关于线路纪律的讨论继续

关于线路纪律的有趣讨论仍在继续,这次是在具有 <>chomp() 正确行为的情况下,即使您有一个远程挂载的NT文件系统,其中的文件以 \r\n 结尾的行。目标:Perl应该在文件位置无论何地都能做到“正确的事情”。这里的背景是,当从ISO-Latin-1文件、韩文的EUC-KR编码文件或日文的SHIFT-JIS编码文件读取时,Perl也应该做到“正确的事情”。

拉里:我期望人们期望Perl做到正确的事情。

早期讨论

更早的讨论

猜猜看

影子密码

Jochen Wiedmann对对影子密码文件的支持提出了抱怨。如果您的供应商通过常规的 getpw* 调用透明地支持它们,Perl也会支持它们;否则您就无能为力了。实际上,这是一个经常被问的问题:如何获取影子密码?

关于这个问题至少有两种观点。观点#1是,当你调用getpw*时,你应该得到通常的七个项目,除非你在使用影子密码的系统上,并且你不是以root用户运行,你将得到x*等类似的东西,而不是真正的密码;因此不需要新的接口。man页面的作者(见perlfunc/getpwent)显然同意这种观点。

观点#2是,getpw*应该始终返回密码为x,而应该有特殊的调用,可能是命名为getsp*或类似的,用于读取影子密码文件。

观点#1的优点:当你从传统密码风格切换到影子密码时,不需要重写或修改任何程序。观点#2的优点:除非程序明确请求,否则任何程序都不会将密码写入其内存,无论它是否由root运行;程序因为运行在root下而突然变得更具风险是件坏事。

无论如何,Sarathy报告说,从5.005_57版本开始,Perl已经完全转向观点#1,即使你在属于观点#2的系统上,它也会模拟这种行为。如果你调用Perl的任何getpw*函数,并且你的程序以root用户运行,那么Perl将进行一个getsp*调用,以便像最初返回的那样填写密码。

我似乎记得关于是否应该这样做的问题在接下来的那一周继续讨论,所以我将在下一份报告中跟进。

NT Perl Sockets中的错误?

Phil Pfeiffer发布了对Perl在NT下网络套接字特殊性的有趣分析。我发现这些很有趣,但没有人讨论。当然,这可能是NT的问题,但无论如何,看到这些问题得到修复会很好。正如Larry所说:“金门大桥不是我们的错,但我们还是在那里建了一座桥。” 阅读它。

文件描述符耗尽

Yossi Klein很困惑,因为Perl限制他只能打开256个文件,即使他使用sysopen尝试打开文件而不使用标准I/O库。当然,即使使用sysopen,它也会从系统获得文件描述符并将其附加到文件句柄,这意味着它使用fdopen创建stdio流结构,所以又回到了标准I/O。

词法变量泄漏

Barrie Slaymaker报告了5.005_61中的一个错误,其中一个文件的词法变量泄漏到正在由do处理的另一个文件。

控制反斜杠

关于双引号字符串中控制反斜杠的语义的讨论持续了很长时间,原信件作者提出了所有可能的规则集,而Ilya Zakharevich指出了它们的所有问题。原询问者最终屈服了。

位运算符

有人被&操作符在Perl 4和Perl 5之间的变化行为所困扰。Tom Christiansen发布了一个清晰的解释。出于某种原因,这个主题被省略了perltrap

讨论随后转向了如何判断一个字符串是否曾在数字上下文中使用过。Larry建议

    length($x & "")

Tom Phoenix提交了一个补丁,为perltrap添加了解释。

污染错误?

David Muir Sharnoff似乎发现了一种情况,其中对数据进行匹配并将数据复制到$1中会导致一个污染值而不是一个未污染值。没有讨论,我没有看到补丁。(我应该提到,从这周开始,我开始监视补丁FTP目录,但由于我的旅行日程,我没有时间理解补丁。)

next 在块外

有人抱怨说

    map { next if ... } ... ;

产生了错误消息`在块外不能“next”’。他声称这个消息是错误的,因为显然next是在一个块中。Larry同意它应该说是`loop’而不是`block’。然而,我没有看到补丁。

安静列表

一段时间内交通量较低,所以Nat Torkington发送了一条ping消息

Nat:只是在测试p5p是否已经安静下来,或者邮件列表管理员是否堵塞了。Kurt Starsinic:perl5-porters正在度假,直到11月25日中午。如果您的需求紧急,请联系[email protected]。谢谢。

各种

大量错误报告、错误修复、非错误报告、问题、答案、垃圾邮件以及少量言论。

下次见(可能是周二或周三),我仍然是,您谦卑而顺从的仆人,


Mark-Jason Dominus

标签

反馈

这篇文章有问题吗?通过在GitHub上打开一个issue或pull request来帮助我们