В настоящее время я делаю это:
# Find all files
File::Find::find(
sub {
my $file = $_;
return if -d $file;
return if $file !~ /(.*)\.htm$/;
...my processing code
}, $inputdir
);
Но я хочу обработать все файлы в алфавитном порядке, в конечном итоге я хотел бы сохранить все имена файлов в массиве, отсортировать массив, а затем использоватьдля каждого цикла и помещаю туда свой код обработки, но я полностью застрял, как это сделать.
Я много гуглил, но, как и все остальное в perl, есть сотни способов сделать все,и ни один из них, похоже, не позволяет мне делать все, что я хочу, то есть все файлы, заканчивающиеся на .html, все подкаталоги в определенном каталоге и отсортированные в алфавитном порядке по имени файла, а не по структуре каталога.
Кто-нибудь может мне помочь?Я знаю, что это можно сделать довольно легко, я просто не могу понять.
Спасибо:)
edit: я пытался сделать это:
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, поскольку нет способа узнать, в каком порядке он находится, пока не пройдёт все файлы, поэтому мне нужно выполнить сортировку впоследствии.