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


in reply to How to compare hash values within the same hash?

DB<100> %hash = ( key1 => 10, key2 => 10, key3 => 3, key4 => 5, key5 => 10 ); => ("key1", 10, "key2", 10, "key3", 3, "key4", 5, "key5", 10) DB<101> $count{$_}++ for values %hash => "" DB<102> \%count => { 3 => 1, 5 => 1, 10 => 3 } DB<106> ($max) = reverse sort values %count => 3 DB<109> grep { $count{$_} == $max } %count => 10

this will give you a list of all values which are maximal, not only one.

update

otherwise, if only one value is enough:

DB<119> %rcount= reverse %count => (3, 10, 3, 10) DB<120> \%rcount => { 1 => 3, 3 => 10 } DB<121> $rcount{$max} => 10

and here an easier approach to find the maxmimum.

DB<113> use List::Util qw/max/ DB<114> $max = max values %count => 3

Cheers Rolf

( addicted to the Perl Programming Language)