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.
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)
In reply to Re: How to compare hash values within the same hash?
by LanX
in thread How to compare hash values within the same hash?
by phildeman
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |