This is line 1. Another line number 2. This is also another line 3. #### This is line 1. Another line number 5. This is also another line 3. #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Array::Utils qw(:all); my $file_1 = "sample-1.txt"; my $file_2 = "sample-2.txt"; my $file_3 = "error.txt"; open (my $in_1, "<" , $file_1) or die "Could not open: ".$file_1." - $!\n"; open (my $in_2, "<" , $file_2) or die "Could not open: ".$file_2." - $!\n"; open (my $out, ">>" , $file_3) or die "Could not open: ".$file_3." - $!\n"; my @data_1 = <$in_1>; chomp(@data_1); my @data_2 = <$in_2>; chomp(@data_2); # symmetric difference my @diff = array_diff(@data_1, @data_2); print Dumper(\@diff); # get items from array @data_1 that are not in array @data_2 my @minus = array_minus( @data_1 , @data_2 ); print Dumper(\@minus); foreach $_ (@diff) { print $out $_ . "\n"; } foreach $_ (@minus) { print $out $_ . "\n"; } #print $out @diff; #print $out @minus; close ($in_1) or die ("Could not close: ".$file_1." - $!\n"); close ($in_2) or die ("Could not close: ".$file_2." - $!\n"); close ($out) or die ("Could not close: ".$file_3." - $!\n"); __END__ $VAR1 = [ 'Another line number 2.', 'Another line number 5.' ]; $VAR1 = [ 'Another line number 2.' ];