如何使用Perl列出目录中的所有文件?

前端之家收集整理的这篇文章主要介绍了如何使用Perl列出目录中的所有文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我通常使用类似的东西
my $dir="/path/to/dir";
opendir(DIR,$dir) or die "can't open $dir: $!";
my @files = readdir DIR;
closedir DIR;

或者有时候我使用glob,但无论如何,我总是需要添加一两行来过滤掉.这是非常烦人的.
你通常如何去做这个常见的任务?

解决方法

我通常会使用glob方法
for my $file (glob "$dir/*") {
    #do stuff with $file
}

这样工作正常,除非目录中有很多文件.在这些情况下,您必须在while循环中切换回readdir(将readdir放在列表上下文中与glob类似):

open my $dh,$dir
    or die "could not open $dir: $!";

while (my $file = readdir $dh) {
    next if $file =~ /^[.]/;
    #do stuff with $file
}

通常,如果我正在一个目录中读取一堆文件,我想以递归方式读取它们.在这些情况下,我使用File :: Find:

use File::Find;

find sub {
    return if /^[.]/;
    #do stuff with $_ or $File::Find::name
},$dir;

猜你在找的Perl相关文章