它在文档中的哪个位置表示虽然测试readdir用于定义?
另请参阅:readdir的“0”如何在while条件下不是false? (不重复;只是密切相关。)
它在文档中的哪个位置表示虽然测试readdir用于定义?例如,这段代码
#!/usr/bin/perl
use strict;
use warnings;
opendir my $dir, "/tmp" or die "$!";
while (my $file = readdir($dir)) {
print "$filen";
}
closedir $dir;
当运行B :: Deparse时:
use warnings;
use strict 'refs';
die "$!" unless opendir my $dir, '/tmp';
while (defined(my $file = readdir $dir)) {
do {
print "$filen"
};
}
z.pl syntax OK
我期待这种行为,但我找不到它的指定位置。在perlop的I / O运算符部分,它说
以下行是等效的:
&NBSP;&NBSP;&NBSP;&NBSP; while (defined($_ = <STDIN>)) { print; }
&NBSP;&NBSP;&NBSP;&NBSP; while ($_ = <STDIN>) { print; }
&NBSP;&NBSP;&NBSP;&NBSP; while (<STDIN>) { print; }
&NBSP;&NBSP;&NBSP;&NBSP; for (;<STDIN>;) { print; }
&NBSP;&NBSP;&NBSP;&NBSP; print while defined($_ = <STDIN>);
&NBSP;&NBSP;&NBSP;&NBSP; print while ($_ = <STDIN>);
&NBSP;&NBSP;&NBSP;&NBSP; print while <STDIN>;
但是没有提到readdir
。
没有找到相关结果
已邀请:
2 个回复
粱委教
从源头看,
在
专门测试了
,
,
和
......嗯,让我们做一些挖掘,看看何时添加了
。 用
进行一些挖掘后发现,至少从1998年开始就是这样,Gurusamy Sarathy在承诺中做出了相应的改变。虽然我没有去挖掘哪些版本已经进入,但我打赌它至少会达到5.6.0及以上。在三角洲中我找不到它。 它可能会在第三版骆驼书中提到,但我还没有检查过。 我认为这里的补丁(甚至只是p5p的一个注释)肯定会受到赞赏。 保罗
抬澈帅沮
的
部分添加了一个注释。 从Perl 5.12开始,你可以在
循环中使用裸
,这将是 每次迭代都设置
。
它并没有明确表示它会检查定义。 (我想指出,添加此功能是我对Perl核心的第一个补丁。)