读取Perl中的目录内容

时间:2012-10-15 02:59:08

标签: perl

我正在尝试使用Perl脚本完成两件事。我有一个文件,它在第一个子目录中有不同的用户目录,并且在每个这些用户目录中都包含一些文件夹,其中包含文本文件。我正在尝试编写一个

的Perl脚本
  1. 列出每个用户的目录
  2. 获取.txt个文件的总数
  3. 对于第二个目标,我有这个代码

    my @emails = glob "$dir/*.txt";
    for (0..$#emails){
        $emails[$_] =~ s/\.txt$//;
    }
    $emails=@emails;
    

    $emails正在返回0.有任何见解吗?

1 个答案:

答案 0 :(得分:2)

通常,在处理目录和可能的子目录中的文件时,使用glob并不是一个好主意。 更好的方法是使用File :: Find模块,如下所示:

use File::Find;

my @emails;

File::Find::find(
    {
        # this will be called for each file under $dir:
        wanted => sub {
            my $file = $File::Find::name;
            return unless -f $file and $file =~ /\.txt$/;
            # this file looks like email, remember it:
            push @emails, $file;
        }
    },
    $dir
);

print "Found " . scalar @emails . " .txt files (emails) in '$dir'\n";