Lorsque je lis un répertoire en Perl avec opendir
, readdir
et closedir
, la fonction readdir
ne semble pas lire les fichiers dans un ordre spécifique (que je peux dire).Comment puis-je lire les fichiers dans un répertoire dans l'ordre de tri?
Je lis un répertoire qui a des sous-répertoires nommés par timestamp:
1224161460
1228324260
1229698140
Je veux lire dans ces répertoires dans l'ordre numérique, ce qui placerait les répertoires les plus anciens d'abord.
Lorsque j'utilise readdir
, le premier qu'il lit est 1228324260, qui est le milieu. Je sais que je pourrais mettre le contenu du répertoire dans un tableau et trier le tableau, mais y at-il une option que je peux passer à readdir
pour lire dans l'ordre trié? Ou peut-être un moyen plus élégant d'accomplir cela que de tout pousser dans le tableau et de trier le tableau? Il existe probablement des modules pour cela, mais il est difficile d'installer des modules dans notre environnement, donc à moins qu'il ne s'agisse d'un module intégré je préférerais ne pas utiliser de modules ...
Merci!
EDIT Comme l'a demandé, je posterai le code que j'utilise:
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);
J'utilise Perl 5.8.2 sur une zone AIX, si cela fait une différence – BrianH
je sais que c'est un script simple, mais pouvez-vous envoyer votre code afin que nous ne devons pas le reproduire? –
Le signe & avant process_dir n'est pas nécessaire et peut dans certains cas être dangereux. Je vous conseille de l'enlever. –