in reply to Printing the variable makes the next match code work. Why?
Are you sure the first one works and the second doesn't? If I add strictures to the top of your script and supply @_lines the following error is generated:
Global symbol "$_line" requires explicit package name at noname1.pl li +ne 10. Execution of noname1.pl aborted due to compilation errors.
Line 10 is the line my $templine = $_line; in the first loop. If I remove strictures but add (1) and (2) as appropriate to the conditional print statements in the two loops I get:
ABC = the line (2)
so maybe all your problem is is that you aren't using strictures and you have an old fashioned "typo in a variable name" error? Oh, the test code I used was:
#use strict; #use warnings; my @_lines = <<LINES; ABC in the first line but not the second LINES foreach my $line (@_lines) { my $templine = $_line; print "$templine"; # or print "$line"; if ($templine =~ /(ABC)/) {print "$1 = the line (1)";} } foreach my $_line (@_lines) { my $templine = $_line; ############ print "$templine"; ############ # or print "$line"; if ($templine =~ /(ABC)/) {print "$1 = the line (2)";} }
Uncomment the strictures to get helpful errors and warnings.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Printing the variable makes the next match code work. Why?
by scaryfast (Initiate) on Jan 11, 2012 at 04:58 UTC | |
by GrandFather (Saint) on Jan 11, 2012 at 05:11 UTC | |
by scaryfast (Initiate) on Jan 11, 2012 at 05:41 UTC |