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
>


-- 
__________________

:(){ :|:& };:

Reply via email to