Thread aktuelles Verzeichnis
(43 answers)
Opened by J-jayz-Z at 2005-05-15 02:55
[quote=J-jayz-Z,16.05.2005, 00:08]Na ja, die Variable mit der größe habe ich, damit ich danach überhaupt mit dem array arbeiten kann. Ich will ja eine Liste, damit die Schleife es dem Inhalt nach oft durchläuft.
Den hash habe ich ja, damit die Ausgabe der Dateigröße auch zur Datei passt... [/quote] Du kannst auch in deiner Schleife mit dem Hash ,,als Liste'' arbeiten... aus Code: (dl
)
1 my @sort = sort { $a <=> $b } @size; wuerde dann Code: (dl
)
1 foreach my $filename ( sort { $hash{$a} <=> $hash{$b} } keys %hash ) werden. Wie du siehst ist der if-Block, der sich ueber die ganze Schleife erstreckte, weggefallen. Wir kehren naehmlich die Bedingung um und springen sofort zum naechsten Durchlauf (next unless -f $filename naechster Durchlauf wenn $filename keine regulaere Datei). Ich hab auch wieder die Unterroutine human_readable_fsize() mit rein genommen, wie du sie benennst ist egal, deinen Code (der die Groesze konvertiert) solltest du aber schon in eine Subroutine auslagern. Innerhalb der Schleife kannst du nun also durch $hash{$filename} auf die Groesze zugreifen, dann kannst du dem Hash auch gleich noch einen schoeneren Bezeichner geben, %sizes, %filesizes oder %files wuerde sich anbieten. Mir ist da noch einmal der Fehler aufgefallen... Code: (dl
)
if (-f, "$for{$_}" && !(-d "$for{$_}")) Hinter den Dateitest-Operatoren darf hier kein Komma folgen (-f, "$for{$_}"), denn dem Operator wuerde sonst das Argument fehlen und dann ist der Aufruf aequivalent zu -f $_. Der Operator -f liefert ja nur wahr wenn er auf eine regulaere Datei trifft, das schlieszt also aus, dass es ein Verzeichnis ist, der Test mit -d kann also wegfallen. Ich denke mal, dass du zusaetzlich mit -d getestet hast, weil -f wegen des Kommas das falsche Ergebnis lieferte. Quote Oefters im Board mitlesen und auf Fragen antwortenAntworten ist da auch schon recht hilfreich, da lernt man ziemlich viel was nicht in den Buecher stehen tut :) ,,Das perlt aber heute wieder...'' -- Dittsche
|