Thread Hash richtig sortieren
(9 answers)
Opened by rwilli at 2009-10-01 14:28
den ersten ansatz hast du ja schonmal bekommen. im code von 'wer' wird einfach die ip-adresse alphanumerisch verglichen. du willst jedoch die einzelnen teile numerisch vergleichen. dann musst du in der sort-routine entweder die zahlen splitten oder gleich die ganze ip in einen int umwandeln und dann numerisch vergleichen.
hier mal ein beispiel mit einer Schwartzian_transform: Code (perl): (dl
)
1 2 3 4 5 6 7 my @keys = map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { [sprintf('%03d' x 4, split /\./, $temphash{$_}->{IP}), $_] } keys %temphash; das sind die sortierten keys. edit: mit Net::IP, was murphy vorgeschlagen hat, sähe das dann so aus: Code (perl): (dl
)
1 2 3 4 5 6 7 8 use Net::IP qw/ ip_iptobin /; my @keys = map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { [ip_iptobin($temphash{$_}->{IP}), $_] } keys %temphash; Last edited: 2009-10-01 16:14:17 +0200 (CEST) Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |