User since
2008-09-05
9
Artikel
BenutzerIn
Hallo Community, ich bin heu hier und hoffe mal ich treff jetzt gleich das richtige forum für meine Frage :-)
Jetzt zum Problem:
System1: Veraltetes Suse (ca. 3 Jahre Alt, Kernel 2.4.18, Perl 5.6.1)
System2: Centos 5 (Kernel 2.6.18, Perl 5.8.8)
Ich habe in letzter Zeit einige relativ veraltete Perl-Skripte von System1 auf System2 Kopiert und hab jetzt einige Probleme mit der readdir-Funktion.
Und zwar wurde im System1 mit readdir() ein Verzeichnis alphabetisch ausgelesen, was auch super so war.
Auf dem System2 ist es nun aber so, dass die Dateien nicht mehr alphabetisch sondern durcheinander eingelesen werden und weil die Skripte von jemandem programmiert wurde der da nicht drauf geachtet hat dass so was passieren könnte, gibt es kein sort() in den Skripten.
Meine Frage ist jetzt, liegt das "unsortierte" einlesen an der unterschiedlichen Perl-Version oder an den unterschiedlichen Systemen und kann ich es irgendwie so hinbiegen dass die Dateien wieder sortiert eingelesen werden?
Was ich gerne hätte wäre ein kurzer Befehl, mit dem man das ausbügeln kann, da ich eigentlich keine Lust habe, tausende Zeilen Code nach readdir() zu durchsuchen um dann ein sort() hinten dran zu schreiben :-)
Habt ihr ne Ahnung wie ich das machen kann?
Viele Grüße und schon mal vielen Dank fürs Lesen meines ersten Beitrags ;-)
Flashbaer
User since
2003-08-04
14371
Artikel
ModeratorIn
Perl's readdir liefert die Reihenfolge, die auch das Betriebssystem liefert...
Ist vielleicht das Filesystem ein anderes?
Das Verhalten von readdir kannst Du nicht beeinflussen.
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Nach allem, was ich weiß, hat readdir() schon immer die Verzeichniseinträge in der Reihenfolge ausgegeben, in der sie vorliegen, ohne Sortierung. Eine alphabetische Reihenfolge wäre reiner Zufall, der z.B. dadurch passieren kann, dass Dateien in alphabetischer Reihenfolge in das Verzeichnis kopiert werden.
Ich hoffe für dich, dass nicht zu viele readdir()s im Code vorkommen.
User since
2003-08-04
14371
Artikel
ModeratorIn
Hey, wir reden hier über Perl: Quellcode einlesen und bei einem readdir ein "sort" hintendran einfügen ;-)
(Ich weiß, dass es nicht ganz so simpel ist *g*)
ich habe düster in erinnerung, dass reiserfs die option hatte (hat?) verzeichniseinträge aphanumerisch zu sortieren.
User since
2005-08-17
1420
Artikel
BenutzerIn
Das ist Gefrickel an falscher Stelle. Wenn das Programm die Namen in alphabetischer Reihenfolge braucht, dann muss man das da fixen und nicht irgendwie im Dateisystem rumbasteln oder aehnlichen Kaese.
User since
2008-09-05
9
Artikel
BenutzerIn
Ok ich danke euch für eure Beiträge,
ich denke es ist wirklich besser die Skripte zu ändern als am Betriebssystem rumzufrickeln... Ist zwar mehr arbeit aber wahrscheinlich die sauberere Lösung...