in reply to max key-value pair in a hash

Yes, this is fair enough. Hashes are unordered in Perl; if you're going to need the maximal element often, or if your data grows a lot, this may become not practicable, in which case you can decide to pay the price at insertion time, and implement a tied hash that remembers its largest element instead of computing it each time you need it.

Some people prefer an explicit subscript to a short list assignment:

my $max = (expr)[0]; # rather than my ($max) = list_expr;

In this case I doubt there are any performance differences, since the list must be constructed anyway.

Update: Or, sure, you scan linearly like CountZero suggests. That's the Right Way to do this kind of thing in general (unless you go for the tied hash). But if you know your data to be this size, it probably doesn't matter much.