sort file1 file2 | uniq -u #### local *IN; my %diffs; open(IN, "sort file1 file2 | uniq -u |") or die "Failed to open pipe to sort/uniq command: $!\n"; ++$diffs{$_} while (); close(IN) or die "Failed to close pipe: $!\n"; open(IN, ") { if ($diffs{$_}) { print $_; delete $diffs{$_}; } } print "\nIn file2 only:\n", keys %diffs, "\n";