sortieren der Dateien nach Datum innerhalb eines hashtables
Frank
- perl
Hallo an alle begnadeten Perl programmierer...
Ich möchte gern Dateien nach Datum sortieren und in einem hashtable abspeichern.
Dazu hab ich die Namen der Dateien und des Datums jeweils in einem unterschiedlichen array gespeichert und wollte sie anschließend in einem hashtable sortieren lassen.
allerdings wird der Inhalt nicht wirklich sortiert sondern es kommt einfach nur Unsinn und kauderwelsch heraus.
Ich wäre froh wenn mir jemand helfen könnte.
ich weiß das es mit sort funktionieren müßte...allerdings...nicht wie
ich hab mir auch schon jedemenge sachen hier angeschaut..konnte mir aber alles nicht recht weiterhelfen...
hier der code:
opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $"; #Auslesen der Dateinamen und in Array speichern
my @Eintrag = readdir(DIR);
closedir(DIR);
opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $"; #Datum auslesen und in array speichern
for (readdir(DIR))
{
my @date = -M "$Verzeichnis/$_" ;
my %hash = (@date => @Eintrag);
my @sortieren = sort {$hash[$a] <=> $hash[$b]} (keys(%hash));
}
closedir(DIR);
Moin Moin !
Hashes sind grundsätzlich unsortiert. Und Dein Code sieht nicht wirklich gut aus. Du schmeist immer wieder Arrays und Scalare durcheinander, was bei Perl dazu führt, daß das Array im scalaren Kontext betrachtet wird und letztlich die Länge ergibt:
@array=('ene','mene','muh');
$scalar=@array;
print $scalar; # liefert 3 !
Probier's mal damit:
opendir DIR,$verzeichnis or die "Can't read $verzeichnis: $!";
my @sortedlist=sort { -M "$verzeichnis/$a" <=> -M "$verzeichnis/$b" } readdir DIR;
closedir DIR;
Die Erklärung findest Du in der Doku zu Perl.
Alexander