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