use strict; use warnings; use feature 'say'; use Data::Dumper; use List::MoreUtils 'zip'; my @x = qw/d b c e a f/; my @y = qw/4 6 5 2 9 1/; my %h = zip @x, @y; my @z = ( sort { $h{ $b } <=> $h{ $a } } keys %h )[0..3]; say Dumper \@z; __END__