in reply to Removing certain lines from array
Anyway, I think your code doesn't work because of the initial value of $x in the second loop: Instead of $length-1 it might be $q-1.
That second loop has another bug: the exit condition ($x == 0) is wrong, it might be $x >= 0 in order to process all the lines starting from the previous being processed and ending when reaching the beginning of the file (array).
Finally the length of the array changes every time you delete an item, but your variable $length doesn't refresh its value.
The best way to do what you try to do in the way you try to do is processing the array backwards as the attached code shows. I've not tested it I think it reflects "the concept"
my $woord1; my $woord2; my $q = $@array-2; while ( $q >= 0 ) { if ($array[$q] =~ /^(\w+|\_)(\s)(\d{4})/) { $woord1 = $1; $x = $q+1; while ($x < $@array) { if ($array[$x] =~ /^(\w+|\_)(\s)(\d{4})/) { $woord2 = $1; if ($woord1 eq $woord2) { print "$woord1($q)\t$woord2($x)\n are the same"; delete $array[$x]; last; } } else { $x++; } } } $q--; }
|
|---|