%seen = (); @seen{ @file1 } = (); @infile1only = grep { ! exists $seen{$_} } @file2; %seen =(); @seen{ @file2 } = (); @infile2only = grep { ! exists $seen{$_} } @file1; @matched = grep { exists $seen{$_} } @file1;