linux-l: An die Perl-Könner ;-)....

Oliver Bandel oliver at first.in-berlin.de
Di Mai 18 10:54:59 CEST 1999


Hi!

On Tue, 18 May 1999, Ihno Krumreich wrote:

> > 
> > Hallöhchen,
> > ist sicher nur eine einfache Funktion aber ich bekomme sie einfach nicht
> > hin !!!! (Anfänger!)
> > Wie schaff ich es mittels Perl eine Liste zu sortieren ???? Die Liste
> > besteht aus 4 Spalten und ich will sie nach der 2. Spalte sortieren lassen
> > und wenn es geht dann noch nach der 1. Spalte ;-) aber auf jeden Fall
> > erstmal nach der 2. Spalte !
> > Aber Perl versteht ja nun unter Tabellen eher Listen also kann ich auf die
> > Tabelle nun nicht einfach "sort" anwenden !?
> > Also "einfach" die Tabelle aus einer Txt-Datei einlesen (Spalten sind durch
> > ; getrennt) , das müßt ja dann ein assoziatives Array werden oder ?
> > Dann nach der 2. Spalte sortieren (??????) und wieder als Tabelle ausgeben
> > , also die Einträge wieder in eine andere Datei schreiben (das geht ja noch
> > ;-) ) .
> > 
> 
> # Loeschen des Feldes
> %daten = ();
> # TODO oeffnen der Datei und einlesen einer Zeile in $zeile
> while <noch_Daten>
> do
> # Aufspalten der Daten in die Felder
> ($spalte1,$spalte2,$spalte3,$spalte4) = split(/;/,$zeile);
> # Assoziatives Feld mit Spalte2 und Spalte1 als Schluessel.
> # Trennzeiche ":" kann beliebig veraendert werden.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\
                                                     Nein!

Die Idee für diese Sortierung ist ganz gut, aber sie funktioniert
nur, wenn das Trennzeichen im Alphabet bzw. Zeichensatz vor dem "A"
kommt.
Bei einem Doppelpunkt hat mann normalerweise diesen Fall, daß der ":"
noch vor dem "A" einsortiert wird.
Die geläufigsten Trennzeichen sind auch alle nutzbar, aber man könnte
mit "kann beliebig verändert werden" leider auf die Nase fallen, weil
die Sortierung bei beliebigen Trennzeichen eben nicht funktioniert.


Ansonsten, wie gesagt, gute Idee. :-)

Tschüß,
   Oliver



Mehr Informationen über die Mailingliste linux-l