my %seen; my @combined = grep !$seen{ $_ }++, @list1, @list2, @list3; #### use List::Util qw( uniq ); my @combined = uniq @list1, @list2, @list3;