#!/usr/bin/perl use strict; my %r; $r{123}{a}=3; $r{123}{b}=2; $r{456}{c}=5; $r{456}{d}=7; map { print "\$r{$_->[0]}{$_->[1]} ==> $r{$_->[0]}{$_->[1]}\n" } map { [$_,(sort { $r{$_}->{$b} <=> $r{$_}->{$a} } keys %{$r{$_}})[0]]} keys %r;
Prints:
$r{456}{d} ==> 7 $r{123}{a} ==> 3
UPDATE: Upon reading the question a second time, I decided that it would perhaps be more useful to maintain a hash that remembers the max valued second key for each first key, as below. The print line is just for show, since you can do anything with the hash once it is created.
my %rmax; $rmax{$_} = (sort { $r{$_}->{$b} <=> $r{$_}->{$a} } keys %{$r{$_}})[0] for keys %r; print "\$r{$_}{$rmax{$_}} ==> $r{$_}{$rmax{$_}}\n" for keys %rmax;
Prints:
$r{123}{a} ==> 3 $r{456}{d} ==> 7
In reply to Re: How to get the Max values' key!
by dogz007
in thread How to get the Max values' key!
by pysome
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |