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 >