Когда я читаю каталог в Perl с помощью opendir
, readdir
и closedir
, функция readdir
, кажется, не читает файлы в каком-либо определенном порядке (это я могу сказать).
Я читаю каталог, в котором есть подкаталоги, названные по временной метке эпохи:
1224161460
1228324260
1229698140
Я хочу читать в этих каталогах в порядке номеров, чтобы самые старые каталоги были первыми.
Когда я использую readdir
, первым он читает 1228324260, который является средним. Я знаю, что могу поместить содержимое каталога в массив и отсортировать массив, но есть ли опция, которую я могу передать readdir
для чтения в отсортированном порядке? Или, может быть, более элегантный способ добиться этого, чем помещать все в массив и сортировать массив? Вероятно, для этого тоже есть модули, но установить модули в нашей среде сложно, поэтому, если это не встроенный модуль, я бы предпочел не использовать модули...
Спасибо!
EDIT В соответствии с просьбой я публикую код, который я использую:
opendir( my $data_dh, $data_dir ) or die "Cannot open $data_dir\n";
while ( my $name = readdir($data_dh) ) {
next if ( $name eq '.' or $name eq '..' );
my $full_path = "${data_dir}/${name}";
next unless ( -d $full_path );
process_dir($full_path);
}
closedir($data_dh);