use strict; use warnings; srand 12345; my %pick = map { $_ => 1 } 1 .. 5, 8, 12 .. 16, 19, 22, 25, 37 .. 41, 62, 75, 77; my @letters = ( q{a} .. q{e} ); my %data = map { $_ => { key => $letters[ rand @letters ] } } 1 .. 80; printf qq{key %2d and %s\n}, unpack q{xNXXXXXa} for sort map { pack q{aN}, $data{ $_ }->{ key }, 0 + $_ } keys %pick; #### key 13 and a key 15 and a key 16 and a key 25 and a key 41 and a key 1 and b key 3 and b key 22 and b key 40 and b key 12 and c key 38 and c key 62 and c key 75 and c key 4 and d key 5 and d key 19 and d key 37 and d key 2 and e key 8 and e key 14 and e key 39 and e key 77 and e #### printf qq{key %2d and %s\n}, reverse unpack q{aN} for sort map { pack q{aN}, $data{ $_ }->{ key }, 0 + $_ } keys %pick;