Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: How to get ($1, $2, ...)?

by educated_foo (Vicar)
on Feb 16, 2007 at 14:30 UTC ( #600444=note: print w/replies, xml ) Need Help??

in reply to How to get ($1, $2, ...)?

Perhaps this (without strict)?
@groups = grep defined, map $$_, 1..$last_capture

Replies are listed 'Best First'.
Re^2: How to get ($1, $2, ...)?
by bart (Canon) on Feb 16, 2007 at 19:29 UTC
    Please don't brainlessly use defined on the list of values of $1, $2 etc, because you're now throwing away information about which pairs of parens were involved in the actual match. Sometimes that's what you want, but usually, it's not.

    And eric256 has the right idea for using @- and/or @+ to find out how many paren pairs were involved.

    You could use these arrays, one item per array, together with substr to extract the matches without symbolic references, but then you'd have to know what variable the match was against, and it may not have been changed in the meantime, for example by using the regexp in s///g, which would foul up the result. So I think the symbolic references for the captures for a reasonably elegant approach.

Re^2: How to get ($1, $2, ...)?
by eric256 (Parson) on Feb 16, 2007 at 18:50 UTC
    my @groups; {no strict 'refs'; @groups = map $$_, 1..$#-;}

    Nice Educated_foo!

    Update: Removed use of grep, didn't notice it in there the first time ;)

    Eric Hodges

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2019-07-19 16:14 GMT
Find Nodes?
    Voting Booth?

    No recent polls found