Du willst beide Zahlen (100;300 usw) in die Sortierung einbeziehen? Versuch mal das:
@daten =("100;300;Hans;Im;Glück;Text;Irgendwas","1023;856;Sepp;Im;Grund;Text;Irgendwas");@sortiert = map { $_ -> [0]}
sort { $b->[0] <=> $a->[0] || $b->[1] <=> $a->[1] }
map { [ $_, (split/;/)[0,1] ] } @daten;Hi Helmut, will ich nicht, sondern nur die erste Zahl
hab umgebaut:
@sortiert = map { $_ -> [0]}
sort { $b->[0] <=> $a->[0] }
map { [ $_, (split/;/)[0] ] } @daten;
Das ist falsch.
Der Index bezieht sich auf [ $_, split ] d.h. [0] ist der pure Datensatz. Das Orginal war aber auch schon falsch, das soll übrigens das von mir genante sein: die Schwartzsche Transformation, ein wenig danach suchen und du könntest es verstehen.
Du willst:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
chomp( my @daten = <DATA> );
my @sortiert = map { $_->[0]}
sort { $b->[1] <=> $a->[1] }
map { [ $_, (split/;/)[0,1] ] } @daten;
print Dumper @sortiert;
__DATA__
1000;300;Hans;Im;Glück;Text;Irgendwas ...
1023;856;Sepp;Im;Grund;Text;Irgendwas ...
1001;300;Hans;Im;Glück;Text;Irgendwas ...
Falls du umgekehrt sortieren willst musst du a und b vertauschen.
das einzige ist, ich krieg nen script-fehler nach ein paar minuten zurückgeliefert
Struppi.