В настоящее время я делаю это:Как получить список всех html-файлов во всех подкаталогах, отсортированных по алфавиту в perl?
# Find all files
File::Find::find(
sub {
my $file = $_;
return if -d $file;
return if $file !~ /(.*)\.htm$/;
...my processing code
}, $inputdir
);
Но я хочу, чтобы обработать все файлы в алфавитном порядке, в конечном счете, я хотел бы хранить все имена файлов в массив, отсортировать массив, а затем использовать для каждого цикла и поместил мой код обработки там, но я полностью застрял, как это сделать.
Я сделал много googling, но, как и все остальное в perl, существует 100 способов сделать все, и никто из них, похоже, не позволяет мне делать все, что я хочу, вот и все файлы, оканчивающиеся на. html, все подкаталоги в определенном каталоге и отсортированы в алфавитном порядке на основе имени файла, а не их структуры каталогов.
Может ли кто-нибудь помочь мне? Я знаю, что это можно сделать довольно легко, я просто не могу понять это.
Спасибо :)
редактировать: я пытался это сделать:
File::Find::find(
sub {
#Only process html files
my $file = $_;
return if -d $file;
return if $file !~ /(.*)\.htm$/;
push(@files, $File::Find::name);
}, $inputdir
);
Но тогда, если я отсортировать массив @files будет сортировать его на основе всей строки, я просто хочу сортируйте его на основе имени файла. Я не думаю, что есть способ сделать это с помощью File :: find: find, так как он не знает, что такое заказ, пока он не прошел все файлы, поэтому мне нужно сделать сортировку потом.