in reply to question about if/pattern matching statement

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 }

Replies are listed 'Best First'.
Re^2: question about if/pattern matching statement
by nkpgmartin (Sexton) on Jul 07, 2008 at 20:50 UTC
    you are right - it seems i had an unnecessary loop in there. i searched for 'Scan' and 'Pointed' first, then removed the foreach @array and it works now. thanks a bunch!