http://www.perlmonks.org?node_id=1019085


in reply to "While" effect on regex?

lightoverhead:

Without the 'g' modifier, the m/.../ operator simply reports whether the string matches or not. Unless you change the string, it will *always* match or *always* fail. If you read perlre, it'll refer you to perlretut. In there it says:

Global matching

The final two modifiers "//g" and "//c" concern multiple matches. The modifier "//g" stands for global matching and allows the matching operator to match within a string as many times as possible. In scalar context, successive invocations against a string will have `"//g" jump from match to match, keeping track of position in the string as it goes along. You can get or set the position with the "pos()" function.

The relevent bit is the italicized bit. It's telling you that with the g operator, the match remembers where it left off, and the next time you match with the g operator, it will proceed from that point.

Long story short: that's what the 'g' modifier does!

...roboticus

When your only tool is a hammer, all problems look like your thumb.