1

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

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

它将打印一次文件;

但是当我使用

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

它弹出许多文件

它出什么问题了?

谢谢

4

2 回答 2

2

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

你可以在perldoc这里查看它:readdir

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

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

于 2013-03-11T03:23:40.053 回答
0

readdir在标量上下文中评估时返回下一个文件(或在读取最后一个文件后返回 undef)。

my $file = readdir($fh);

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


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

my @files = readdir($fh);

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

于 2013-03-11T05:39:05.233 回答