XP is just a number PerlMonks

### Re^2: Sort hash with values

by sammy_01 (Initiate)
 on Jun 24, 2013 at 06:36 UTC ( #1040376=note: print w/replies, xml ) Need Help??

in reply to Re: Sort hash with values
in thread Sort hash with values

Hi Rahul,

May be this will solve your problem.

```sub mySort {

\$a =~ /(\d+)/;
my \$firstVal = \$1;
\$b =~ /(\d+)/;
my \$secVal = \$1;
\$firstVal <=> \$secVal;
}

my %IP_Store = (
"11.0.0.1" => "UEH1_system_ip",
"11.0.0.11" => "UEH11_system_ip",
"11.0.0.3" => "UEH25_system_ip",
"11.0.0.25" => "UEH111_system_ip"
);

%new_hash = reverse(%IP_Store);

foreach my \$key (sort mySort (keys(%new_hash))) {
chomp(\$key);
print "\$key\n";
print "System_ip = \$new_hash{\$key}\n";
#print "PDN-IP = '\$Values' \n";
}
The only change i have done is reversing the hash.

Output:

-------

UEH1_system_ip

System_ip = 11.0.0.1

UEH11_system_ip

System_ip = 11.0.0.11

UEH25_system_ip

System_ip = 11.0.0.3

UEH111_system_ip

System_ip = 11.0.0.25

Replies are listed 'Best First'.
Re^3: Sort hash with values
by AnomalousMonk (Chancellor) on Jun 24, 2013 at 19:44 UTC
The only change i have done is reversing the hash.

A naive hash reversal works just fine if the hash values are unique to begin with. If they're not, somebody's gonna get (silently) clobbered. Maybe add a pre/post reversal size check:

```>perl -wMstrict -le
"my %hash = qw(a aye  b bee  c see  eh aye);
;;
my \$pre_k = keys %hash;
%hash = reverse %hash;
\$pre_k == keys %hash or die 'somebody got clobbered';
"
somebody got clobbered at -e line 1.
Oh Yes, i do agree with you.
Sammy..

Create A New User
Node Status?
node history
Node Type: note [id://1040376]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2018-02-23 03:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
When it is dark outside I am happiest to see ...

Results (300 votes). Check out past polls.

Notices?