-4

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

  1. 列出每个用户的目录
  2. .txt获取文件总数

对于第二个目标,我有这个代码

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

$emails返回 0。有什么见解吗?

4

1 回答 1

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";
于 2012-10-19T06:43:00.270 回答