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


in reply to m//g behaves strange...

I think you've missed something.

  1. This is somewhat more of a feature. If you want to extract all matches from a regex, you can do @a=/regex/g and get all the strings that match. If you want the count, you could do $a=()=/regex/g;.
  2. From perlre:
    Perl defines the following zero-width assertions:
    \G - Match only at pos() (e.g. at the end-of-match position of prior m//g)
    In other words, if the regex starts with \G the match has to start at pos or the regex doesn't match.
  3. m//g shouldn't reset in scalar context until it fails. Otherwise you couldn't do loops such as while ($string =~ /regex/g) { ...

Perl Idioms Explained - @ary = $str =~ m/(stuff)/g by tachyon should help with regexes in list context.

Hope this helps.

antirice    
The first rule of Perl club is - use Perl
The
ith rule of Perl club is - follow rule i - 1 for i > 1