本周在 p5p 1999/12/26

备注

去年我在两周内出差三次,导致报告落后。我仍未赶上进度,所以将跳过最后几个报告。我本来也想跳过本周的报告,但由于它很小,我还是决定完成。下一份报告应该是1月9日至15日的。为此带来的不便表示歉意。

元信息

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

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

模块接口和版本元信息

上周开始了一场关于如何以标准方式将版本信息放入模块的讨论,Sam Tregar建议在POD文档中存储版本信息和模块接口信息。讨论继续。我应该在上次报告中提到这一点。

Sam的信息

默认SVs

当你用Perl创建一个GV(全局值)时,它的SV槽位会自动填充。例如,当你定义@foosub bar时,你会自动为$foo$bar分配空间。背后的逻辑可能是因为标量变量非常常见,所以最好是预先分配它们。(我想这就是为什么defined *{foo}{SCALAR}总是返回true的原因。)

Nick Ing-Simmons对此表示不满,说许多SV被分配了却从未使用,而且原来的假设,即SV非常常见,现在可能不再成立,因为大多数标量变量都是局部的。

我没有看到对此的解决方案。

PREPARE的再次出现

之前的报告中,我提到Ilya的PREPARE功能尚未进入5.005_63。Sarathy补充说,除非它被修复以不使用新操作码,否则它也不会进入5.005_64。

我提到这一点是因为Ilya回复说Perl需要二十或三十个新操作码,并且去年他通过引入新操作码,这些操作码可以原子性地组合两个或更多在序列中经常出现的其他操作码,某些操作可能被加速两倍。这很有趣,尽管不清楚这与PREPARE有什么关系。

原始讨论

后续讨论

更多的刷新问题

一位匿名用户提交了一个错误报告,指出如果你调用truncate,Perl会截断文件而不会刷新stdio缓冲区。这只是众多类似、相关错误中最新的一个。我 wonder why this is so hard to get right? Is it just that nobody has taken it up?

Ilya说,上次这种情况出现时,他建议Perl应在任何缓冲区和非缓冲区操作之间、任何读操作和任何写操作之间总是刷新缓冲区,但“结果是nil。”

Array::Virtual

上周的讨论Andrew Ford报告说,这已经完成,可以在http://www.ford-mason.co.uk/resources/找到。它最终会出现在CPAN上。

#line指令

Andrew Pimlott 指出,在 require 的文件中,#line 指令的隐含文件名不是从其所在文件继承,而是从要求它的文件继承。显然,这是一个特性。Andrew 提交了一个修改行为的补丁。没有后续讨论。我不知道这个补丁是否被接受。

DProf

Håkon Alstadheim 为 Devel::DProf 提供了一个补丁,允许用户通过环境变量指定数据输出文件。

各种

一系列中等规模的错误报告、错误修复、非错误报告、问题和答案。显然,垃圾邮件发送者都在休假。

下次再会,您的谦逊且顺从的仆人,


Mark-Jason Dominus

标签

反馈

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