#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use List::MoreUtils 'duplicates'; my (@lines); while (<>) { next if /^\s*$/; # skip empty lines chomp; push @lines, $_; } continue { close ARGV if eof; # Not eof()! } my @dublicatedLines = duplicates @lines; print Dumper \@lines, \@dublicatedLines; __END__ $ perl test.pl File1.txt File3.txt $VAR1 = [ 'ID121 ABC14', 'ID122 EFG87', 'ID145 XYZ43', 'ID157 TSR11', 'ID181 ABC31', 'ID962 YTS27', 'ID567 POH70', 'ID921 BAMD80', 'ID121 ABC14', 'ID612 FLOW12', 'ID122 EFG87', 'ID745 KIDP36', 'ID145 XYZ43', 'ID157 TSR11' ]; $VAR2 = [ 'ID121 ABC14', 'ID122 EFG87', 'ID145 XYZ43', 'ID157 TSR11' ]; #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use List::MoreUtils 'duplicates'; my (@keys, @values); while (<>) { next if /^\s*$/; # skip empty lines chomp; my ($key, $value) = split /\s+/; push @keys, $key; push @values, $value; } continue { close ARGV if eof; # Not eof()! } my @duplicatedKeys = duplicates @keys; my @duplicatedValues = duplicates @values; print Dumper \@keys, \@values, \@duplicatedKeys, \@duplicatedValues; __END__ $ perl test.pl File1.txt File3.txt $VAR1 = [ 'ID121', 'ID122', 'ID145', 'ID157', 'ID181', 'ID962', 'ID567', 'ID921', 'ID121', 'ID612', 'ID122', 'ID745', 'ID145', 'ID157' ]; $VAR2 = [ 'ABC14', 'EFG87', 'XYZ43', 'TSR11', 'ABC31', 'YTS27', 'POH70', 'BAMD80', 'ABC14', 'FLOW12', 'EFG87', 'KIDP36', 'XYZ43', 'TSR11' ]; $VAR3 = [ 'ID121', 'ID122', 'ID145', 'ID157' ]; $VAR4 = [ 'ABC14', 'EFG87', 'XYZ43', 'TSR11' ];