P is for Practical PerlMonks

### Re: min and max in a hash of hash

by ikegami (Pope)
 on Jul 12, 2010 at 06:04 UTC ( #848929=note: print w/replies, xml ) Need Help??

in reply to min and max in a hash of hash

```use List::Util qw( min max );

my \$max_y = max keys %Year;
my \$max_m = max keys %{ \$Year{\$max_y} };

my \$min_y = min keys %Year;
my \$min_m = min keys %{ \$Year{\$min_y} };

Replies are listed 'Best First'.
Re^2: min and max in a hash of hash
by wwe (Friar) on Jul 12, 2010 at 16:30 UTC
Hi ikegami, could you enlighten me what is wrong on using List::Util? the following code works fine, after I corrected the hash provided:
```foreach my \$y (sort keys %Year) {
my \$min_y = List::Util::min values %{ \$Year{\$y} };
print "min of [\$y] is [\$min_y]\n";
}
Edit: this works for sure only if you doesn't care about the month of the min/max value.

That will give you the minimum value for each year. The OP wanted just the overall minimum. If he doesn't need the y/m of the minimum, then he could use

```use List::Util qw( min max );

my \$min = min map { min values %{\$Year{\$_}} } keys %Year;
my \$max = max map { max values %{\$Year{\$_}} } keys %Year;

Update: Fixed s/values/keys/ as per reply.

hi, slight correction

```use List::Util qw( min max );

my \$min = min map { min values %{\$Year{\$_}} } keys %Year;
my \$max = max map { max values %{\$Year{\$_}} } keys %Year;
I believe he was interested in both the year and month as am I. I currently have the same issue. I have the same data structure using a hash of hash. I would like to report for each year, the month and value of the min and max value. How can your existing example be modified to accommodate this?

Create A New User
Node Status?
node history
Node Type: note [id://848929]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2018-06-18 02:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Should cpanminus be part of the standard Perl release?

Results (107 votes). Check out past polls.

Notices?