Struppi: array ... sort ... zahlen ... problem ...

Beitrag lesen

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.