Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: m//g behaves strange...

by antirice (Priest)
on Nov 09, 2003 at 21:41 UTC ( [id://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.

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

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2024-03-19 11:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found