jonny: Spalten sortieren

Beitrag lesen

Hallo Siechfred,

jetzt starre ich nun schon seit ca. 1 1/2 Stunden auf diese drei Zeilen Code und versuche wirklich es zu verstehen.

@sortiert = map  { $_->[0] }                                #1
            sort { $a->[1] <=> $b->[1] }                    #2
            map  { [ $_, (split / /)[$nr] ] } @zeilen;      #3

Ich habe es folgendermaßen verstanden...

zu 3.
In $_ steht jede volle Zeile aus @zeilen, so wie es auch bei einem normalen Schleifendurchgang der Fall ist "while(<>) {}" und es werden anonyme Arrays gebildet [], genau genommen zwei, nämlich $a->[0] und $a->[1].

zu 2.
In $a->[0] befindet sich der Inhalt ausser $nr. In in $a->[1] befindet sich der Inhalt der split $nr Operation, also die Spalte, die ich sortieren möchte. Mit der Sortierung in $a->[1] wird auch die Reihenfolge der Zeilen in In $a->[0] angepasst.

zu 1.
wie du schon schriebst, wird hier das Ergebnis der Sortierung wieder an $_ zurückgegeben, also die sortierte Spalte wird wieder an ihre position gebracht.

???

Mfg,
Jonny