my @array = qw/ foo bar baz quux /; my %hash = qw/ f1 baz f2 foo /; my @newarray; foreach my $thing (@array) { push @newarray, $thing if grep { $_ eq $thing } values %hash; } print "newarray - @newarray\n"; __output__ newarray - foo baz