加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:11:51 所属栏目:大数据 来源:网络整理
导读:我通常使用类似的东西 my $dir="/path/to/dir";opendir(DIR,$dir) or die "can't open $dir: $!";my @files = readdir DIR;closedir DIR; 或者有时候我使用glob,但无论如何,我总是需要添加一两行来过滤掉.这是非常烦人的. 你通常如何去做这个常见的任务? 解
我通常使用类似的东西
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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读