本周p5p动态 2000/10/08
备注
首先,本周元新闻是您有了新的作者。我已经从Mark-Jason Dominus手中接管了Perl5-Porters摘要的制作,因此从现在起,请将您的更正和补充发送到simon@brecon.co.uk。
本周相对安静,只有几百封邮件。
自引用绑定已损坏
Alan Burlison指出,现在创建自引用绑定会导致Perl进入恶性的递归。什么是自引用绑定?正如你可能猜到的,tie
一个变量到自身的过程如下
package MyTie;
sub TIEARRAY { bless $_[1], $_[0] }
package main;
my (@self);
tie(@self, "MyTie", \@self);
问题出在绑定是如何实现的。Perl使用一个称为“魔法”的结构附加到每个绑定变量上,以包含像FETCH
这样的子程序。当你获取一个变量的值时,Perl会检查变量中是否有存储的FETCH
子程序。如果有,Perl会调用它来确定变量的值。如果这个子程序试图查看变量本身,Perl会调用存储在变量“魔法”中的FETCH
子程序来尝试获取其值,而这个子程序又试图查看变量,结果变得一团糟。Alan随后调查并初步将责任归咎于Sarathy,但事实证明这是一个错误的判断;问题远比这复杂,没有人想出在不破坏嵌套绑定或线程的情况下解决问题的方法。部分问题似乎在于,没有人真正知道自引用绑定应该做什么。没有补丁出现,讨论也就此结束。
在别处,Daniel Chetlin修复了一些绑定文件句柄的bug。他在工作中还提出了一些有趣的论点。阅读相关内容。
虚拟值
Jarkko提出了一个新的想法,用于标量按需写入共享,但他表示这可能要等到Perl 6才能实现。Ilya突然出现,并典型地说他已经做到了。
为什么unshift这么慢?
Ben Tilly在为什么unshift这么慢上发起了一场讨论,虽然没有得到太多关注,但其中包含了很多关于如何使数组处理更快的有价值信息。讨论中没有出现补丁或基准测试,但有人有机会尝试其中的一些想法,看看是否有所改进。
更多Perl黑客指南
Mark Fisher为perlhack
提供了一个有用的补丁,该补丁可在使用Purify调试Perl时使用,促使人们承诺解释如何使用他们最喜欢的代码检查器。其他补丁都没有出现,讨论转向了PERL_DESTRUCT_LEVEL
的详细内容。
整数和浮点数处理。
目前,将两个包含整数的变量组合起来实际上是一个浮点运算,这意味着变量需要升级以存储浮点值,而它们并不一定需要这样做。很难看到绕过这一点的良方,但Sarathy提出了一个建议。如果有几个小时空闲的人应该考虑应用Sarathy的想法,并带回来一些基准测试。
在浮点数方面的其他新闻中,Nick Clark发现了一些64位bug,与UV和NV之间的转换有关。有一些讨论,但没有补丁。
修复了printf %v
格式错误
[本报告的这一部分由Dominus编写。]
在一份早期的报告中,我提到了 printf
格式指定符 %v
中的一个错误,并建议这可以成为一个适合初学者修复 Perl 错误的好机会。Avi F. 挑战了这个难题,并提供了一个补丁,该补丁被接受了。不幸的是,Avi 在我停止撰写 p5p 摘要之后才这么做,所以从未得到过适当的认可。非常感谢你,Avi!
[现在我们回到 Simon Cozens 的身边。]
Jarkko冒充我
我注意到 split 函数中的一个错误,该错误导致 Unicode 值被破坏;Jarkko 的流感恶化产生了一种狂热,不仅使他自言自语,还模仿了我。
但他至少修复了错误。如果我长时间篡改 Unicode,我也会发生这种情况吗?下周揭晓!
各种
通常是错误报告、测试结果、错误修复、测试结果、神秘事物以及更多测试结果的一揽子。那个向人们发送重复 CC 的丑角已经被赶出此地。
直到下周,我仍然是你们谦卑而顺从的仆人,
标签
反馈
这篇文章有什么问题吗?请通过在 GitHub 上打开一个问题或拉取请求来帮助我们。
- More commenting... maybe?
github.polettix.it - Perl Weekly Challenge 121: Invert Bit
blogs.perl.org - Web nostalgia: MojoX::Mechanize
github.polettix.it - On the eve of CPAN Testers
blogs.perl.org - PWC121 - The Travelling Salesman
github.polettix.it - PWC121 - Invert Bit
github.polettix.it - Floyd-Warshall algorithm implementations
github.polettix.it - Perl Weekly Challenge 120: Swap Odd/Even Bits and Clock Angle
blogs.perl.org - How I Uploaded a CPAN Module
blogs.perl.org - App::Easer released on CPAN
github.polettix.it