Thread Sortierprogramm lexikografisch aus Datei
(12 answers)
Opened by Andreas at 2012-10-09 23:08 Guest Andreas Du sollst also die Zeilen der Datei sortiert in der DOS-Box ausgeben? Dann lies die Datei in ein Array ein, und gib das sortierte Array aus. Ggf. musst Du die Sortiervorschrift anpassen (Groß-/Kleinschreibung ignorieren, Umlaute einsortieren, z.B. phonebook search ...). Du solltest Dir gleich zu Beginn einige Dinge zur besseren/sichereren Perl-Programmierung angewöhnen: strict und warnings verwenden, lexikalische Filehandles und die 3-Argument-Form von open. In Deinem Code ist die logische Bedingung in der if-Konstruktion verkehrt (and statt or, wenn beides erfüllt sein soll). Den Test auf Existenz (-e) kannst Du weglassen, wenn Du nur nicht-leere Dateien zulässt (-s). Verwende besser chomp statt chop. Schließe auch die letzte Codezeile mit einem Semikolon. Hier Dein Code mit den genannten Änderungen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 use warnings; use strict; print "Bitte geben Sie den Dateinamen an: "; my $datei = <STDIN>; chomp $datei; if (not -s $datei) { die ("Die Datei ist leer oder existiert nicht.\n"); } open (my $EINGABE, '<', $datei) or die "Can't open $datei: $!\n"; my @zeilen = <$EINGABE>; @zeilen = sort @zeilen; print $_ foreach @zeilen; close ($EINGABE); print "\nIhre Datei wurde nun Lexikografisch sortiert. [OK] "; <STDIN>; sort() ohne weitere Angaben sortiert einfach nach Zeichencodes, d.h. Großbuchstaben vor Kleinbuchstaben, Umlaute je nach verwendeter Codepage. Wenn Du ausgefeiltere Sortierungen brauchst, schreib Dir am besten eine Sortiervorschrift in einer eigenen Funktion. dafür gibt es mehrere Vorgehensweisen, z.B. kann man die globalen Variablen $a und $b verwenden (im Beispiel case-independent): und ersetze die Zeile mit sort im Skript durch Code (perl): (dl
)
@zeilen = sort sortiervorschrift @zeilen; Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|