我正在尝试使用Perl脚本完成两件事。我有一个文件,它在第一个子目录中有不同的用户目录,并且在每个这些用户目录中都包含一些文件夹,其中包含文本文件。我正在尝试编写一个
的Perl脚本.txt
个文件的总数对于第二个目标,我有这个代码
my @emails = glob "$dir/*.txt";
for (0..$#emails){
$emails[$_] =~ s/\.txt$//;
}
$emails=@emails;
但$emails
正在返回0.有任何见解吗?
答案 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";