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?