Dynamic subregexes such as <$top> are non-capturing by default. You can easily
capture the result by using something like <top=$top> instead:
$ cat xyz.p6
my $match;
my $top = rx/ \( $<core> = [ \w* ] \) /;
given "(abc)" {
$match = m/^ <top=$top> /;
}
if $match {
say "core is { ~$<top><core> }";
}
$ ./perl6 xyz.p6
core is abc
Hope this helps,
Pm
On Mon, Feb 22, 2016 at 10:25:19AM +0100, Theo van den Heuvel wrote:
> Hi all,
>
> I am trying to change a regex programmatically. For that I insert a variable
> in another regex. However, the match object appears to have lost the capture
> of the inner regex. In a code example:
>
> =========
> my Match $match;
>
> my $top = rx/ \( $<core> = [ \w* ] \) /;
>
> given "(abc)" {
> $match = m/^ <$top>/;
> }
>
> if $match {
> say "core is { ~$<core> }";
> }
>
> =========
>
> Using the latest rakudo release (2016.01.1), I find that the matching
> process works but the capture gets lost. Any ideas?
>
> Thanks,
>
> --
> Theo van den Heuvel
> Van den Heuvel HLT Consultancy
>