in reply to Selection of Hash key value pairs

You say where the keys value pairs are sorted but you do not specify whether you are sorting by key or by value. Assuming you mean by value, this would work:-

use strict; use warnings; # Initialise a hash with random values. # our %hash; $hash{$_} = int rand 500 for 0 .. (int rand 100) + 100; # Count our keys, calculate top 20% number, initialise # count of how many printed. # our $keyCt = scalar keys %hash; our $perc = 20; our $limit = int($keyCt * $perc / 100); our $iters = 0; # Feed in keys, map keys and values, sort by values, # grep out the top however many and print key and # value. # print map {"$_->[0] - $hash{$_->[0]}\n"} grep {$iters ++ < $limit} sort {$a->[1] <=> $b->[1]} map {[$_, $hash{$_}]} keys %hash;

I hope this is of use.

Cheers,

JohnGG