in reply to Re: Re: Global regex giving up too soon
in thread Global regex giving up too soon

So basically, I guess there is no way to get /g to look over the entire regex,
What do you mean by "looking over the entire regex"? /g means "match repeatedly (without overlap)".

Abigail

Replies are listed 'Best First'.
Re: Re: Global regex giving up too soon
by Wassercrats (Initiate) on Jan 20, 2004 at 11:38 UTC
    Well, does it make sense that there is a substitution made in more than one iteration of my loop, but if I use the regex alone, there are fewer (only one) substitutions made?
      Yes, of course. Consider:
      #!/usr/bin/perl use strict; use warnings; my $str = "1" x 5; $_ = $str; print "Single s///g:\n"; print "Before: [$_]; "; s/1(1+)/$1/g; print "After [$_]\n"; $_ = $str; print "Loop s///:\n"; while (1) { print "Before: [$_]; "; last unless s/1(1+)/$1/; print "After: [$_]\n"; } print "\n"; __END__ Single s///g: Before: [11111]; After [1111] Loop s///: Before: [11111]; After: [1111] Before: [1111]; After: [111] Before: [111]; After: [11] Before: [11]; After: [1] Before: [1];

      Abigail

        Thanks for the demo. I better review all my uses of /g. Why does it bother me that there isn't a modifier that could replace the loop in these cases? Probably because I could use one, and because there are so many other shortcuts in Perl.