Как я могу сканировать содержимое всего каталога, включая содержимое его подкаталогов, и найти в них самый новый файл .pl
, используя Perl?
Я хочу создать отсортированный массив / список полного файлапути ко всем .pl
файлам внутри дерева каталогов.
Так, например, если мой базовый каталог /home/users/cheeseconqueso/
, я хочу найти .pl
файлов в этом каталоге и любом подкаталоге в этом пути изатем сортируйте файлы .pl
по дате.
Конечным результатом будет массив @pl_paths
, где $pl_paths[0]
будет выглядеть примерно так: /home/users/cheeseconqueso/maybe_not_newest_directory/surely_newest_file.pl
Исходя из этого результата, яхочу выполнить файл, но я думаю, что как только я выясню отсортированный массив, выполнение файла в $pl_paths[0]
не будет проблемой.
Возникает аналогичный вопросна SO, который я пытался изменить в соответствии со своими потребностями, но я здесь по очевидным причинам.
Код, который я использую для получения новейшего файла NAME только в одном каталоге:
opendir(my $DH, $DIR) or die "Error opening $DIR: $!";
my %files = map { $_ => (stat("$DIR/$_"))[9] } grep(! /^\.\.?$/, readdir($DH));
closedir($DH);
my @sorted_files = sort { $files{$b} <=> $files{$a} } (keys %files);
print $sorted_files[0]."\n";