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);