View Single Post
  #2 (permalink)  
Old 11-26-2007, 06:42 AM
mobilegeek mobilegeek is offline
D-Web Analyst
 
Join Date: Jun 2007
Posts: 205
mobilegeek is on a distinguished road
Smile Re: How do I sort a hash by the hash value?

Here's a program that prints the contents of the grades hash, sorted numerically by the hash value. Check it out…

Code:
#!/usr/bin/perl -w 

# Help sort a hash by the hash 'value', not the 'key'. 
to highest). 
sub hashValueAscendingNum { 
$grades{$a} <=> $grades{$b}; 
} 



# Help sort a hash by the hash 'value', not the 'key'. 
# Values are returned in descending numeric order 
# (highest to lowest). 
sub hashValueDescendingNum { 
$grades{$b} <=> $grades{$a}; 
} 


%grades = ( 
student1 => 90, 
student2 => 75, 
student3 => 96, 
student4 => 55, 
student5 => 76, 
); 

print "\n\tGRADES IN ASCENDING NUMERIC ORDER:\n"; 
foreach $key (sort hashValueAscendingNum (keys(%grades))) { 
print "\t\t$grades{$key} \t\t $key\n"; 
} 

print "\n\tGRADES IN DESCENDING NUMERIC ORDER:\n"; 
foreach $key (sort hashValueDescendingNum (keys(%grades))) { 
print "\t\t$grades{$key} \t\t $key\n"; 
}
Reply With Quote