use strict; use warnings; my @arr1 = ("one","two","three","four","five"); my @arr2 = ("one","a","b","one","c","d","e","two","f","g","h","two","i","j","two"); my @arr3; my %hash; for my $arr2 (@arr2){ if (grep $arr2, @arr1){ $hash{$arr2}++; }else{ push (@arr3, $arr2); } } push (@arr3, keys %hash); print "@arr3"; output: ------- e a d two j c h one g b f i