Hi,
ich möchte dir noch ein anderes Script zeigen, wo aber das gleiche Problem auftritt, aber diesmal habe ich > statt gt usw genommen. Einer, der beiden Dateien, die im Ornder bleibt, ist trotzdem falsch (also ist nicht die letzte und vorletzt , sondern meistens die letzte und irgend eine andere.)
hast Du Dir die entsprechenden Werte des Arrays mal sinnvoll ausgeben lassen?
if ($file =~ /^(\d+?_)(\d+?)(..{1,5})$/) {
Die Werte in den Klammern enthalten auch nicht-Zahlzeichen, oder beginnen im Fall $3 mit einem Kommazeichen (und einem beliebigen Zeichen, z.B. Buchstaben). Du versuchst jedoch, sie als vollständige Zahlen anzusehen. Das kann schon für "Verwirrung" sorgen!
Achte darauf, dass Du _exakt_ die Zeichenketten im Array abspeicherst, die Du auch brauchst.
# $vorletzte_datei = $neueste_datei;
Dass dies auskommentiert ist, hat seine Richtigkeit?
Btw: Vielleicht willst Du perldoc -f sort (oder auch den entsprechenden Abschnitt von perldoc perlfaq4) lesen. Wenn Du "einfach nur" das Array nach Deinen Wunsch-Kriterien sortierst, sparst Du Dir das "merk Dir das letzte und das vorletzte"-Gehacksel, weil Du nämlich einfach die ersten bzw. letzten beiden Elemente verwendest. Oder die ersten bzw. letzten drei, wenn Du auf einmal mehr brauchst.
Cheatah