Как пройти все файлы в каталоге; если в нем есть подкаталоги, я тоже хочу просматривать файлы в подкаталогах

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";
            }
    }

Ответы на вопрос(5)

Ваш ответ на вопрос