in reply to highest value in hash
Hello maciej, and welcome to the Monastery!
Expanding on the advice from Anonymous Monk, here is one way to implement the solution:
#! perl use warnings; use strict; my %hash = (1 => 8, 2 => 6, 3 => 3, 4 => 7); my $highest_value; my $highest_key; while (my ($key, $value) = each %hash) { print "$key key has value $value\n"; if (!defined $highest_value || $highest_value < $value) { $highest_key = $key; $highest_value = $value; } } print "The element with key $highest_key " . "has the highest value $highest_value\n" if defined $highest_key +;
Output:
12:36 >perl 591_SoPW.pl 4 key has value 7 1 key has value 8 3 key has value 3 2 key has value 6 The element with key 1 has the highest value 8 12:38 >
Note that this uses < to compare values numerically. To compare the values as strings, you would need to use lt instead:
if (!defined $highest_value || $highest_value lt $value)
Hope that helps,
Update: ++Anonymous Monk for the syntax below: it’s both simpler and more efficient. Confession: I had to re-read the documentation for each to verify that it Does the Right Thing here (it does). :-)
Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: highest value in hash (defined)
by Anonymous Monk on Mar 31, 2013 at 04:12 UTC |
In Section
Seekers of Perl Wisdom