Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re: m//g behaves strange...

by antirice (Priest)
on Nov 09, 2003 at 21:41 UTC ( #305719=note: print w/replies, xml ) Need Help??

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.

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

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://305719]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2021-08-03 01:46 GMT
Find Nodes?
    Voting Booth?
    My primary motivation for participating at PerlMonks is: (Choices in context)

    Results (32 votes). Check out past polls.