Lopa: Sort eines Hash of Array -> 3tes Element.

Hallo,

ich hab eine HoA Referenz.

%HoA = (  
flintstones => [ "fred", "barney", "100 ],  
jetsons => [ "george", "jane", "99" ],  
simpsons => [ "homer", "marge", "8000" ],  
);

Nun würde ich diesen gerne Ausgaben und zwar nummerisch absteigend sortiert vom 3 Feld.

Ergebnis sollte also sein:

Simpsons - 8000  
Flintstones - 100  
Jetsons - 99

Das klappt schonmal nicht:

  
foreach my $family ( sort { $HoA->{$b}[2] <=> $HoA>{$a}[2] } keys %$HoA )  
{  
 print "$family: @{ $HoA->{$family} }";  
}

Danke für Hilfe

Lopa

  1. Geht doch ... ups ... irgendwie falsch getestet. Sorry.

  2. Hallo,

    ich hab eine HoA Referenz.

    [code lang=perl]%HoA = (

    nein, hast du nicht.

    Daher geht auch der Zugriff auf [2] in die Hose.

    foreach my $family ( sort { $HoA->{$b}[2] <=> $HoA>{$a}[2] } keys %$HoA )

    Richtig wäre: $HoA{jetsons}->[2];

    Hotti

    1. Danke.

      Ich hab nun noch ein weiteres Problem.
      Wie kann ich denn noch ein weiterer sort hinzufügen für nächste Feld?
      D.h. erst numerisch auf das 2te Feld und danach alphabetisch aufs erste Feld.
      Wie macht man das am besten?

      1. hi,

        Wie kann ich denn noch ein weiterer sort hinzufügen für nächste Feld?

        Häng einfach die sorts aneinander:

          
        foreach my $fam (sort{$HoA{$a}->[2] <=> $HoA{$b}->[2]} sort{$HoA{$a}->[0] cmp $HoA{$b}->[0]} keys %HoA){  
        		print join("\t", @{$HoA{$fam}}), "\n";  
        }  
        
        

        Hotti