如何用一个语句读取Perl中的目录?

Nat*_*man 3 directory perl

我正在编写一个脚本来查找目录中的某些文件并对其进行处理.我继续写下面的内容:

opendir DIR, $dir;
@files = readdir DIR;
closedir DIR;
Run Code Online (Sandbox Code Playgroud)

虽然我可以(实际上应该)将它包装在一个函数中,但我想知道是否有更优雅的方法来做到这一点?

dav*_*420 14

最优雅的是使用其他人已经写过的功能.

use File::Slurp;

@files = read_dir $dir;  # . and .. are removed by default
Run Code Online (Sandbox Code Playgroud)


dra*_*tun 5

另一种方法是使用do块:

my @files = do {
    opendir my $d, '/your/dir/';
    readdir $d;
};
Run Code Online (Sandbox Code Playgroud)

它更优雅,因为我的$ d是局部阻塞(不像你的DIR全球)且不需要closedir,因为当$ d出去的范围文件句柄将自动关闭.

/ I3az /