summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Christiansen <tchrist@perl.com>2011-05-08 22:42:54 -0400
committerJesse Vincent <jesse@bestpractical.com>2011-05-08 22:43:53 -0400
commit499a640db217d9e13779fabe08a7736127153ff3 (patch)
tree8514eab573d2722c96d51157bd886f39a591d7a3
parentf5a93a43fe9802cca88dfd56d68a220ec6625118 (diff)
downloadperl-499a640db217d9e13779fabe08a7736127153ff3.tar.gz
"fix bug; also prefix ?? matches with m due to 5.14 deprecation"
I also fixed a bug in the original. I'm always getting C<eof> vs C<eof()> swapped in my brain, which is what had happened here. The old code didn't do what it said it did because it contrary to the comments didn't reset at each eof -- because it used the C<eof()> form which is all of ARGV rather than bare C<eof> for the last file read, and thus each per-file component of ARGV. I am concerned about the two paragraphs previous to that, because they use eof() and I am not perfectly clear that they should. But I left them as is. Jesse asked for "a lot of eyes", so if folks could please look at this patch and see whether it looks ok, I'd appreciate it. I did test it under blead, both with and without the prefixed m on the m?? matches, which is how I discovered it was buggy with the C<eof()> not C<eof>. --tom
-rw-r--r--pod/perlsyn.pod12
1 files changed, 6 insertions, 6 deletions
diff --git a/pod/perlsyn.pod b/pod/perlsyn.pod
index 33eb4ae137..603dd15ae8 100644
--- a/pod/perlsyn.pod
+++ b/pod/perlsyn.pod
@@ -337,17 +337,17 @@ which is Perl short-hand for the more explicitly written version:
Note that if there were a C<continue> block on the above code, it would
get executed only on lines discarded by the regex (since redo skips the
continue block). A continue block is often used to reset line counters
-or C<?pat?> one-time matches:
+or C<m?pat?> one-time matches:
# inspired by :1,$g/fred/s//WILMA/
while (<>) {
- ?(fred)? && s//WILMA $1 WILMA/;
- ?(barney)? && s//BETTY $1 BETTY/;
- ?(homer)? && s//MARGE $1 MARGE/;
+ m?(fred)? && s//WILMA $1 WILMA/;
+ m?(barney)? && s//BETTY $1 BETTY/;
+ m?(homer)? && s//MARGE $1 MARGE/;
} continue {
print "$ARGV $.: $_";
- close ARGV if eof(); # reset $.
- reset if eof(); # reset ?pat?
+ close ARGV if eof; # reset $.
+ reset if eof; # reset ?pat?
}
If the word C<while> is replaced by the word C<until>, the sense of the