Как пройти все файлы в каталоге; если в нем есть подкаталоги, я тоже хочу просматривать файлы в подкаталогах
opendir(DIR,"$pwd") or die "Cannot open $pwd\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if ($file !~ /\.txt$/i);
my $mtime = (stat($file))[9];
print $mtime;
print "\n";
}
В основном я хочу отметить метку времени всех текстовых файлов в каталоге. Если есть подкаталог, я хочу включить файлы в этот подкаталог.
Может ли кто-нибудь помочь мне изменить приведенный выше код, чтобы он также включал подкаталоги.
Если я использую код ниже в Windows, я получаю метки времени всех файлов, которые находятся в папках, даже за пределами моей папки
my @dirs = ("C:\\Users\\peter\\Desktop\\folder");
my %seen;
while (my $pwd = shift @dirs) {
opendir(DIR,"$pwd") or die "Cannot open $pwd\n";
my @files = readdir(DIR);
closedir(DIR);
#print @files;
foreach my $file (@files) {
if (-d $file and !$seen{$file}) {
$seen{$file} = 1;
push @dirs, "$pwd/$file";
}
next if ($file !~ /\.txt$/i);
my $mtime = (stat("$pwd\$file"))[9];
print "$pwd $file $mtime";
print "\n";
}
}