我设法提取了.txt文件的文件名,但我在将其存储到数组中时遇到了问题。
文件名:
sample1.txt sample2.txt sample3.txt
代码:
sub find_files {
my $getfile = $File::Find::name;
if ($getfile =~ m/txt$/) {
my @sample;
($file, $path, $ext) = fileparse($getfile, qr/\..*/);
push(@sample, "$file");
print "$sample[0] ";
}
}
预期产出:
SAMPLE1
输出:
sample1 sample2 sample3
答案 0 :(得分:3)
您将每个文件名存储在@sample
中,但该范围的范围太小,并且在if
块的末尾,print
之后被丢弃。
这应该会更好。它也更简洁,并确保找到的项目是文件,而不是目录
my @sample;
sub find_files {
return unless -f and /\.txt\z/i;
my ($file, $path, $ext) = fileparse($File::Find::name, qr/\.[^.]*\z/);
push @sample, $file;
}
find(\&find_files, '/my/dir');
print "$_\n" for @sample;