my @file1 = ; my @file2 = ; # Here is where you would normalize the data. Things like uc, lc, ucfirst, s/\s//g, and the like. my (%file1, %file2); $file1{$_} = 1 foreach @file1; $file2{$_} = 1 foreach @file2; foreach my $value (sort keys %file1) { if ($file2{$value}) { print FILE3 "$value\n"; } } #### # Using the same data structures as above ... foreach my $value (sort keys %file2) { unless ($file1{$value}) { print FILE3 "$value\n"; } } #### my (%file1, %file2); $file1{$_}++ foreach @file1; $file2{$_}++ foreach @file2;