Cheatah: Wie Sortiert man ein Array nach einem bestimmten darin befindlichen Wert?

Beitrag lesen

Hi,

@feld = ('bla1,bla,1','bla2,bla,4','bla3,bla,3','bla4,bla,2');

Dann gehe jedes Feld durch:

oder mach's einfacher (ungetestet):

my @sorted_feld = sort { (split(/,/,$a))[2] <=> (split(/,/,$b))[2] } @feld;

Man beachte, daß die Zahl der split()s exponentiell mit der Zahl der Elemente in @feld steigt... eventuell ist es besser, vorher einmal mit

for (my $i=0; $i<scalar @feld, $i++) {
  my ($x, $y, $z) = split(/,/, $feld[$i]);
  $feld[$i] = "$z,$x,$y";
}

ganz @feld zu bearbeiten, dann einfach nur noch simpel my @sorted_feld = sort @feld; dranzusetzen und das Array anschließend analog wieder zurückzuwandeln.

Cheatah

P.S.: Den zweiten Code kann man sicher mit map noch optimieren, da bin ich aber zu faul zu ;-)