in reply to splitting a list

I would, very simply, map List2 into a hash and compare that hash to List1, storing the results. As your problem is specified, there is no need to modify list 1.

use strict; my @list1 = qw(education production results); my @list2 = qw(education joe bob carl production steve results test); my %mapping = map { $_ => undef } @list1; my (@l2_only); undef @l2_only; foreach (@list2) { push(@l2_only, $_) unless exists $mapping{$_}; } print 'List 1: ', join(', ', @list1),"\n"; print 'List 2: ', join(', ', @l2_only), "\n"; __END__ The script above prints: List 1: education, production, results List 2: joe, bob, carl, steve, test
Larry Wall is Yoda: there is no try{}
The Code that can be seen is not the true Code