本周p5p动态 1999/11/28
- 备注
- 新元信息
- 线程模型讨论
- 关于线路纪律的讨论继续
- 影子密码
- NT Perl Sockets中的错误?
- 文件描述符耗尽
- 词法变量泄漏
- 控制反斜杠
- 位运算符
- 污染错误?
next
在块外- 安静列表
- 各种
备注
这份报告非常晚,因为我从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]
。谢谢。
各种
大量错误报告、错误修复、非错误报告、问题、答案、垃圾邮件以及少量言论。
下次见(可能是周二或周三),我仍然是,您谦卑而顺从的仆人,
标签
反馈
这篇文章有问题吗?通过在GitHub上打开一个issue或pull request来帮助我们