Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Understanding regular expressions: why do I have to use map to clear up undefs in regex output?

by Transient (Hermit)
on Jun 19, 2009 at 22:07 UTC ( [id://773141]=note: print w/replies, xml ) Need Help??


in reply to Understanding regular expressions: why do I have to use map to clear up undefs in regex output?

From perlop:
The /g modifier specifies global pattern matching--that is, matching a +s many times as possible within the string. How it behaves depends on + the context. In list context, it returns a list of the substrings ma +tched by any capturing parentheses in the regular expression. If ther +e are no parentheses, it returns a list of all the matched strings, a +s if there were parentheses around the whole pattern.
The reason your first regex worked as planned was because there were no capturing parentheses. Thus only what matched was returned.

In the second regex, you have two sets of capturing parens. If you look at the pattern of undefs in @b, you can see it's returning undef when the other half of the regex doesn't match.

I'm not exactly sure how you could match that the way you want using one regex alone and still retain the matching capabilities.
  • Comment on Re: Understanding regular expressions: why do I have to use map to clear up undefs in regex output?
  • Download Code

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2024-04-16 09:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found