Thread Bei sort einen Eintrag vorziehen (3 answers)
Opened by bianca at 2011-04-28 19:39

clms
 2011-04-28 20:30
#148067 #148067
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2011-04-28T17:39:05 bianca
Habe sort {$a eq 'c' || $a cmp $b} probiert, das stellt c ans Ende statt an den Anfang.
Bei sort {$b eq 'c' || $a cmp $b} steht es an zweiter Stelle statt am Anfang.

Ich bin zu müde um auszuprobieren, aber Dein Sortierkriterium sollte
in jedem Fall die Bedingung cmp($a,$b) == -cmp($b,$a) erfüllen.

Deshalb must Du am Anfang Deiner Sortierfunktion $a und $b auf 'c' prüfen,
damit in beiden Fällen die Sonderbehandlung für 'c' angesprochen wird.
sort {($a eq 'c') ? -1 : (($b eq 'c') ? 1 : $a cmp $b)} könnte gehen.
(evtl. musst Du -1 und 1 vertauschen.)

Oder Du filterst 'c' vorher raus:
foreach ('c', sort {$a cmp $b} grep {$_ ne 'c'} keys %test) {...}




View full thread Bei sort einen Eintrag vorziehen