Answers

Question and Answer:

  Home  Perl Programming

⟩ 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:

#!/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 "ntGRADES IN ASCENDING NUMERIC ORDER:n";

foreach $key (sort hashValueAscendingNum (keys(%grades))) {

print "tt$grades{$key} tt $keyn";

}

print "ntGRADES IN DESCENDING NUMERIC ORDER:n";

foreach $key (sort hashValueDescendingNum (keys(%grades))) {

print "tt$grades{$key} tt $keyn";

}

 186 views

More Questions for you: