http://www.perlmonks.org?node_id=1040376


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