Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么;打印readdir(DIR\u句柄)&引用;会弹出很多文件吗?_Perl - Fatal编程技术网

Perl 为什么;打印readdir(DIR\u句柄)&引用;会弹出很多文件吗?

Perl 为什么;打印readdir(DIR\u句柄)&引用;会弹出很多文件吗?,perl,Perl,我使用readdir(DIR)读取文件,但是当我使用 $file = readdir(DIR); print $file; print "\n"; sleep(2); 它将一次打印一个文件 但是当我使用 print readdir(DIR); print "\n"; sleep(2); 它弹出许多文件 怎么了 谢谢readdir没有读取文件。它扫描一个目录以查找下一个目录列表 您可以在此处查看perldoc: 它只打印了一个文件,声明为$file,这是因为它是标量值。它将只从目录句柄读取一次

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

$file = readdir(DIR);
print $file;
print "\n";
sleep(2);
它将一次打印一个文件

但是当我使用

print readdir(DIR);
print "\n";
sleep(2);
它弹出许多文件

怎么了


谢谢

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

您可以在此处查看
perldoc

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


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

readdir
在标量上下文中计算时返回下一个文件(或在读取最后一个文件后取消定义)

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



readdir
在列表上下文中计算时返回剩余文件

my @files = readdir($fh);

print
在列表上下文中计算其参数列表。

阅读列表与标量上下文的相关内容。在打印中,您使用的是列表。因此readdir可以输出列表和单个标量?正如其他人所说,
readdir
的行为在列表或标量上下文中是不同的,就像许多其他函数一样。理解这种差异对于成功学习Perl至关重要。
my @files = readdir($fh);