Perl: Greifen Sie auf eine nach Wert sortierte Hashref an

8

Ich schreibe ein Skript, das meine ftpd-Protokolle durchsucht und wie folgt einen Hash generiert:

%Vor%

Wie greife ich auf diesen Hash mit den Schlüsseln sortiert nach Größe?

Ich habe das versucht, aber ich bekomme einen Fehler, der keine hashref

sagt %Vor%     
somebody 04.03.2010, 12:46
quelle

3 Antworten

14

Ihr Problem hängt nicht mit der Sortierung zusammen, sondern mit der ungewöhnlichen Art, wie Sie $stats definiert haben - nämlich als Verweis auf eine Hash-Referenz .

%Vor%

Sie können dies entweder verwenden:

%Vor%

Oder, wenn Sie wirklich die ref-to-hash-ref Sache machen müssen:

%Vor%

Beachten Sie auch, dass Sie wahrscheinlich <=> (numerischer Vergleich) anstelle von cmp (Zeichenfolgenvergleich) verwenden möchten.

    
FMc 04.03.2010, 13:25
quelle
4

Sie können eine Sortierfunktion übergeben, um die Werte in der gewünschten Reihenfolge zu erhalten.

%Vor%

AUSGABE:

%Vor%

Wenn Sie möchten, dass sie vom niedrigsten zum höchsten sortiert werden, müssen Sie nur $ b und $ a in der Funktion sortBySize umstellen:

%Vor%     
RC. 04.03.2010 12:59
quelle
1

Ihre erste Zeile scheint falsch zu sein. Es sollte

sein %Vor%

Ihr Versuch leidet unter einem anderen Syntaxfehler; Sie benötigen nur ein einziges Sigil, wenn Sie mit -> deneferenzieren, und ich glaube, dass es besser ist, von bareword Hashtasten abzusehen:

%Vor%     
Svante 04.03.2010 13:29
quelle

Tags und Links