Wenn ich ein Verzeichnis in Perl mit opendir
, readdir
und closedir
lese, scheint die Funktion readdir
die Dateien nicht in einer bestimmten Reihenfolge zu lesen (was ich sagen kann).
Ich lese ein Verzeichnis, das Unterverzeichnisse hat, die nach Epoche Zeitstempel benannt sind:
%Vor%Ich möchte in diesen Verzeichnissen in numerischer Reihenfolge lesen, die die ältesten Verzeichnisse zuerst setzen würde.
Wenn ich readdir
verwende, ist die erste, die es liest, 1228324260, was die mittlere ist. Ich weiß, ich könnte den Inhalt des Verzeichnisses in ein Array setzen und das Array sortieren, aber gibt es eine Option, die ich an readdir
übergeben kann, um in sortierter Reihenfolge zu lesen? Oder vielleicht eine elegantere Art, dies zu erreichen, als alles in Array zu schieben und das Array zu sortieren? Es gibt wahrscheinlich auch Module, die das tun, aber es ist schwierig, Module in unserer Umgebung zu installieren. Wenn es kein eingebautes Modul ist, würde ich lieber keine Module verwenden ...
Danke!
BEARBEITEN Wie gewünscht, poste ich den Code, den ich verwende:
%Vor%readdir kann im Array-Kontext aufgerufen werden, also tun Sie das einfach:
%Vor%Sie können es mit etwas Globemagie versuchen, Glob scheint in einer sortierten Weise zu funktionieren, also dies:
%Vor%oder
%Vor%sollte funktionieren. Sei nur vorsichtig mit glob, denn dies:
%Vor%macht etwas Halbmagisches und druckt den Dir-Inhalt zweimal auf jeder Zeile. zB:
%Vor% Werfen Sie einfach einen sort
vor jeden Listenoperator, den Sie neu ordnen wollen. Sie müssen die Ergebnisse auch nicht in einem Array speichern. Sie können ein foreach
verwenden:
Tags und Links perl directory readdir getdirectories