I'm trying to count first occurrence of a pattern in a block of lines which have the same number in first field. I was using if statements to test the conditions. The problem is that it reads the pattern of every line, not skipping rest of the block if the pattern has been matched. Putting the block of related lines into an array is impractical due to the length of the lines in the file. I tried nesting an if conditional, but it didn't make any difference in skipping the lines in the block.

#!/usr/local/bin/perl -w
use strict;
my $count;
my $control;
$count=0;
while (my $lfile = glob"ZKL*.ARC"){
$lfile =~ /^ZKL(\d+).ARC/;
open(LFILE, "<$lfile");
while (<LFILE>) {
my $control = substr($_,0,4);
if ($control < 9000){
if (m/PATTERN/){
++$count;
if ($control != substr($_,0,4)){
my $control = substr($_,0,4);
}else{
next;
}
}
}
}
}
}
print "$count\n";

small snippet of file1
230 11 0 2510 1219ZZ1 735L >all lines continue until 250
1230 11 1 1160 1220ALM >characters
1230 11 2 8120 1221J K >
1232 11 0 1111 1221J K >
1232 11 1 1111 1222J K >



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to