我已经成功地提取了我的.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
发布于 2018-04-06 03:05:59
您正在将每个文件名存储在@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;https://stackoverflow.com/questions/49684462
复制相似问题