eff_i_g has asked for the wisdom of the Perl Monks concerning the following question:
According to the docs for %- and %+ they both allow "access to the named capture buffers, should they exist, in the last successful match" and they differ in that %- "associates a reference to an array containing the list of values captured by all buffers with that name (should there be several of them)" and %+ does not.
Yet, as seen below, %+ does not report all of the captures. Am I misunderstanding something or is this buggy behavior?
Code:Output:use Data::Dumper; '12' =~ / (?<twelve> (?<one>1) (?<two>2) ) /x; print "All accounted for:\n"; print Dumper(\%-); print "Here too:\n"; print Dumper([$1, $2, $3]); print "Where are one and two?\n"; print Dumper(\%+);
All accounted for: $VAR1 = { 'one' => [ '1' ], 'twelve' => [ '12' ], 'two' => [ '2' ] }; Here too: $VAR1 = [ '12', '1', '2' ]; Where are one and two? $VAR1 = { 'twelve' => '12' };
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Inconsistent captures in %+ and %-
by toolic (Bishop) on Oct 22, 2010 at 20:18 UTC | |
by eff_i_g (Curate) on Oct 22, 2010 at 20:26 UTC | |
by toolic (Bishop) on Oct 22, 2010 at 20:29 UTC | |
by JavaFan (Canon) on Oct 22, 2010 at 23:30 UTC | |
|
Re: Inconsistent captures in %+ and %-
by fod (Friar) on Oct 22, 2010 at 20:22 UTC |