Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Sort hash keys

by kennethk (Monsignor)
on Mar 18, 2014 at 17:20 UTC ( #1078824=note: print w/ replies, xml ) Need Help??


in reply to Sort hash keys

So, your issue is that you have a number preceded by alphabetic characters, and you want to do numeric sorting on the numbers? In your sample, all your keys begin with hs. Is this guaranteed? Also, what is this %planets hash? Essentially, if you want to sort based on a substring of your key, then you will need to parse out that substring.

The easiest answer here would probably be to keep leading 0's on your keys, e.g. hs01 instead of hs1. Barring that, you could do the parsing in a named sub:

use strict; my %planets; my %cuantas_veces_sale; for my $nombre (sort keysort keys %cuantas_veces_sale) { print "$nombre\n"; }; sub keysort { return $planets{$a} <=> $planets{$b} if $planets{$a} <=> $planets{ +$b}; my ($num_a) = $a =~ /(\d+)/; my ($num_b) = $b =~ /(\d+)/; $num_a <=> $num_b; }
or possibly cache the parse in a hash ahead of time:
use strict; my %planets; my %cuantas_veces_sale; my %alphas = map {$_ => /(\D+)/} keys %cuantas_veces_sale; my %numerics = map {$_ => /(\d+)/} keys %cuantas_veces_sale; for my $nombre (sort { $planets{$a} <=> $planets{$b} or $alphas{$a} cmp $alphas{$b} or $numerics{$a} cmp $numerics{$b} } keys %cuant +as_veces_sale) { print "$nombre\n"; };

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.


Comment on Re: Sort hash keys
Select or Download Code
Re^2: Sort hash keys
by cristianro87 (Initiate) on Mar 18, 2014 at 17:30 UTC

    I updated the code, the planets things was just a test and i copy the wrong code. Yes hs is always there, and i can't put hs01 or whatever it must be hs1, hs2 and so on

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1078824]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (9)
As of 2014-08-20 19:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (122 votes), past polls