#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %hash; my @x = qw/d b c e a f/; my @y = qw/4 6 5 2 9 1/; @hash{@x} = @y; print Dumper \%hash; my @sorted = (sort {$hash{$b} <=> $hash{$a}} keys %hash) [0 .. 3]; print Dumper \@sorted; __END__ $ perl test.pl $VAR1 = { 'f' => '1', 'c' => '5', 'a' => '9', 'd' => '4', 'b' => '6', 'e' => '2' }; $VAR1 = [ 'a', 'b', 'c', 'd' ];