Cuando leo un directorio en Perl con opendir
, readdir
y closedir
, la función readdir
no parece leer los archivos en un orden específico (que puedo decir).¿Cómo puedo leer los archivos en un directorio en orden ordenado?
estoy leyendo un directorio que tiene subdirectorios llamados por fecha y hora época:
1224161460
1228324260
1229698140
quiero leer en estos directorios en orden numérico, lo que pondría en primer lugar los directorios más antiguas.
Cuando uso readdir
, el primero que dice es 1228324260, que es el del medio. Sé que podría poner los contenidos del directorio en una matriz y ordenar la matriz, pero ¿hay alguna opción que pueda pasar al readdir
para leer en orden ordenado? ¿O tal vez una forma más elegante de lograr esto que empujar todo en conjunto y ordenar la matriz? Probablemente existan módulos para hacer esto también, pero es difícil instalar módulos en nuestro entorno, así que, a menos que sea un módulo integrado, preferiría no usar módulos ...
¡Gracias!
EDITAR a lo solicitado, estoy publicando el código que estoy usando:
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);
estoy usando Perl 5.8.2 en una caja de AIX, si se hace una diferencia – BrianH
Sé que es un script sencillo, pero puede publicar su código por lo que no tenemos que reproducirlo? –
El signo & antes de process_dir no es necesario y, en algunas circunstancias, puede ser dañino. Te aconsejaría que lo quites. –