in reply to Re: Pattern Matching - a Tricky one
in thread Pattern Matching - a Tricky one

my $found = 0; while ($found < 2) { my $line = <DATA>; if ($line =~ /customer2/) { $found++; my @customer2_data = split(/=/, $line); print "$found- $customer2_data[1]"; } }

Don't you run into a infinite loop with this? In case $found is less than 2 and <DATA> has reached its end-of-file, there will be no more matches and $found won't be incremented... So it will loop quite a while ;o))

So, maybe this would be better:

my $found = 0; while ( $found < 2 and my $line = <DATA> ) { if ( $line =~ m/customer2/ ) { # ... } }

Even if this case only appears, if the input data is corrupt, I would try to avoid such construct.

Replies are listed 'Best First'.
Re^3: Pattern Matching - a Tricky one
by kdj (Friar) on Jan 02, 2009 at 16:32 UTC

    Ah, good call on the infinite loop. Sometimes I forget that you can't trust your input.

    There's a bit more I could have done with this, such as detecting/capturing whether I was in a credit or a debit section, as that would presumably be good to know. But, this has the basics at least.