my %b_hash = map { $_ => 1 } @b_array; my @new_array = grep $b_hash{$_}, @a_array; #### my @array = ( 'foo', 'bar', 'baz', 'cheeze whiz' ); for (my $left = 0, my $right = $#array; $left < $right; $left++, $right--) { @array[$left, $right] = @array[$right, $left]; }