Look at the loops.
while ($line = <FB>) # every line foreach (@array) # every field in that line for ($i=0; $i<=$#dbarray1; $i++) # items in @dbarray1 # if ($array[10] =~ m/Scan/) if (/Scan/)
The first condition, ($array[10] =~ m/Scan/), will look for "Scan" in field 10 (the 11th field) n times per line where n is the number of items in @dbarray1 times the number of fields.
The second condition, (/Scan/), will look for "Scan" in each field n times where n is the number of items in @dbarray1. This is because the regexp match is not bound to a variable, so it's matching against $_, which is being iterated by the "foreach (@array)".
I suggest you check for "Scan" right after you split into @array:
while ($line = <FB>) { chomp($line); @array = split /\s*\|/, $line; if ( $array[10] =~ /Scan/ ) { # happiness ensues }
In reply to Re: question about if/pattern matching statement
by kyle
in thread question about if/pattern matching statement
by nkpgmartin
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |