Wenn ich ein Verzeichnis in Perl mit opendir
, readdir
et closedir
die readdir
Funktion scheint die Dateien nicht in einer bestimmten Reihenfolge zu lesen (soweit ich das beurteilen kann).
Ich lese ein Verzeichnis mit Unterverzeichnissen, die nach Epochenzeitstempel benannt sind:
1224161460
1228324260
1229698140
Ich möchte diese Verzeichnisse in numerischer Reihenfolge einlesen, d.h. die ältesten Verzeichnisse stehen an erster Stelle.
Wenn ich die readdir
Die erste Zahl ist 1228324260, die mittlere Zahl. Ich weiß, ich könnte den Inhalt des Verzeichnisses in ein Array packen und das Array sortieren, aber gibt es eine Option, die ich an readdir
in sortierter Reihenfolge zu lesen? Oder vielleicht einen eleganteren Weg, dies zu erreichen, als alles in Array zu schieben und das Array zu sortieren? Es gibt wahrscheinlich Module, die dies ebenfalls tun, aber es ist schwierig, Module in unserer Umgebung zu installieren, also würde ich es vorziehen, keine Module zu verwenden, es sei denn, es ist ein eingebautes Modul...
Danke!
EDIT Wie gewünscht, werde ich den von mir verwendeten Code veröffentlichen:
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);