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