为什么“打印readdir(DIR_HANDLE);”会弹出很多文件?

时间:2013-03-11 03:01:28

标签: perl

我使用readdir(DIR)来读取文件,但是当我使用

$file = readdir(DIR);
print $file;
print "\n";
sleep(2);

它会打印一次文件;

但是当我使用

print readdir(DIR);
print "\n";
sleep(2);

它弹出许多文件

它出了什么问题?

感谢

2 个答案:

答案 0 :(得分:2)

readdir无法读取文件。它扫描目录以查找下一个目录列表。

您可以在此处查看perldocreaddir

它只打印一个声明为$file的文件的原因是因为它是一个标量值。它只会从目录句柄中读取一次并返回一个列表。

更常见的是,当您想要从整个目录中读取时,将其分配给readdir返回的列表,从而在第二个示例中打印所有目录列表。

答案 1 :(得分:0)

在标量上下文中评估时,

readdir返回下一个文件(或者在读取最后一个文件后的undef)。

my $file = readdir($fh);

标量赋值运算符在标量上下文中计算其RHS操作数。


readdir在列表上下文中进行评估时返回剩余的文件。

my @files = readdir($fh);

print在列表上下文中评估其参数列表。