Philipp Hasenfratz: Hash nach Werten sortieren

Beitrag lesen

Halihallo $xNeTworKx

Will ich aber nach den Werten sortieren zB :

foreach (sort {$a <=> $b} values %namen)    {
print "$_ : $namen{$_}<br>\n";
}

bekomme ich einen "use of uninitialized value .." in der Zeile :
print "$_ : $namen{$_}<br>\n";

Ja, das ist auch richtig so, denn: du sortierst, wie gewollt, die _Werte_ des Hashes und
durchläufst dann die _Werte_ in der foreach-Schleife. Dann liest du jedoch $namen{$_} ein
und das ist dann natürlich meistens uninitiailisiert (es sei denn, der _Wert_ gäbe es
auch als _Key_ im Hash). Du müsstest den Hash umdrehen (im Sinne von Wert=Name und
Name=Wert) und dann nach den Keys (die vorher Values waren) sortieren und iterieren.
Problem ist nur, dass du natürlich gleichwertige values verlierst, aber das lässt sich
ja umgehen (eg. Hash-Value ist ein Array).

Viele Grüsse

Philipp