Was talking to folks over on the #perl6 IRC channel. It appears the recommended way is:
sub matching_chars(Str $chars_to_match, Str $str) { # warnings, treats as string not variable $str ~~ /<$_>/ given "<[$chars_to_match]>"; } ~Paul On Sat, Aug 31, 2019 at 9:54 PM yary <not....@gmail.com> wrote: > I found something easy in Perl 5 that's puzzling me in Perl 6- specifying > a character class via a variable. > > Perl 5: > sub matching_chars { > (my $chars_to_match, local $_) = @_; > /([$chars_to_match]+)/ > } > > say matching_chars('24680', '19584203'); # says 8420 > say matching_chars('+\/\]\[', 'Apple ][+//e'); # says ][+// > > Perl 6: > sub matching_chars(Str $chars_to_match, Str $_) { > # warnings, treats as string not variable > m/<[$chars_to_match]>/; > } > > How do I get Perl 6 to interpret a variable in the contents of a character > class? > From http://docs.perl6.org/language/regexes#Regex_interpolation I'd think > that Rakudo would use the literal contents of $chars_to_match, instead > it's using the literal chars "$ c h a r s _ t o _ m a t c h" and warning > about repeated c, underscore, etc. > > -y > -- __________________ :(){ :|:& };: