in reply to Getting a list of captures in Perl 5.10

Without using any of the 5.10 features you can do:

$string = 'bla bla [[en:English]][[de:German]][[ga:Irish]] bla bla'; %matches = $string =~ m/\[ \[ ( en|de|ga ) : (.+?) \] \]/gx; $var = { lang => [ keys %matches ] }; pp $var; { lang => ["en", "ga", "de"] }

But that makes me wonder why you are capturing the longnames just to throw them away?

If you remove the capture for those you can do:

my $string = 'bla bla [[en:English]][[de:German]][[ga:Irish]] bla bla' +; my $var = { lang => [ $string =~ m/\[ \[ ( en|de|ga ) : .+? \] \]/gx ] + }; pp $var; { lang => ["en", "de", "ga"] }

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^2: Getting a list of captures in Perl 5.10 (pp?)
by carol (Beadle) on May 24, 2008 at 23:07 UTC
    pp $var;
    Somewhat off-topic, but what is this pp?
Re^2: Getting a list of captures in Perl 5.10
by amir_e_a (Hermit) on May 24, 2008 at 16:47 UTC
    Thanks for the replies. The example with the hash only works with two sets of capturing parens. It's a nice hack, but i was to hoping to find something generic which will work with any number of captures.