use strict; use warnings; open(input0, "e_h.txt"); my $colNum=0; my $limit=10; my @arrayEquals; my $line = ; WHILE: while($line ne undef) { s/\r?\n//; my @array = split /\t/, $line; my $followingLine = ; my @followingLineArray=split /\t/, $followingLine; if( $array[$colNum] eq $followingLineArray[$colNum]){ print "match\n"; push (my @arrayEquals, @array); } else{ push (@arrayEquals, @array); for my $i(0 .. $#arrayEquals){ my $colNum=1 if ($arrayEquals[$i][$colNum] eq $arrayEquals[$i+1][$colNum]){ next; }else{ my $colNo=-2; if (($arrayEquals[$i][$colNo] - $arrayEquals[$i+1][$colNo]) < $limit) { #not enough difference so won't keep any of the lines in @arrayEquals $line = $followingLine; next WHILE; } } } print output0 @arrayEquals; #has difference, so keep the values $line = $followingLine; } }