Sort eines Hash of Array -> 3tes Element.
Lopa
- perl
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
Geht doch ... ups ... irgendwie falsch getestet. Sorry.
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
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?
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