Calocybe: CGI sortieren von zwei Listen in abhängigkeit....

Beitrag lesen

Hi!

ich wollte die Punkte in  @PUNKTE   "pushen"
und die Namen in @NAME "pushen"
wenn ich dann @PUNKTE sortiere stimmen ja aber die Name - Punkte nichtmehr überein...

Ich mache das gewoehnlich so, dass ich nicht zwei getrennte Listen fuehre, sondern nur eine. Diese ist eine Liste von Hashes, und jeder Hash enthaelt den Namen und den Punktestand. Das sieht so aus:

@highscore = (
    {
        'name' => 'Ein Name',
        'points' => 42
    },
    {
        'name' => 'Noch ein Name',
        'points => 17
    }
    {
        'name' => 'Yet another name',
        'points' => 23
    }
);

Zugriff erfolgt z.B. ueber $highscore[1]->{'name'} (ergibt 'Noch ein Name') oder $highscore[2]->{'points'} (ergibt 23).
Mehr zu solchen Datenstrukturen findest Du in den Perl-Manpages perllol und perldsc (perlref solltest Du schon kennen).

Die Sortierung ist dann denkbar einfach:

@highscore = sort { $a->{'points'} <=> $b->{'points'} } @highscore;

HTH && So long