Using a set would be good but it doesn't give you the matching string from the original (which is what I thought was required) otherwise Sets would be my first thought.
On Sun, 1 Sep 2019, 17:57 William Michels, <w...@caa.columbia.edu> wrote: > Hi Yary and Paul and Simon, > > I ran into the same difficulties as Yary with repeated characters, so > I tried the .unique method. Then after a while, I realized that > problems like this might best be treated as "Set" problems in Perl6. > Note the Set Intersection operator "(&)" below: > > sub matching_chars(Str $a, Str $b) { > my @c = $a.comb.unique; > my @d = $b.comb.unique; > #say @c; say @d; > return @c (&) @d; > } > > say matching_chars("24680", "19584203"); #RETURNS set(0 2 4 8) > say matching_chars('+\/\]\[', 'Apple ][+//e'); #RETURNS set(+ / [ ]) > > > https://docs.perl6.org/routine/Set > https://docs.perl6.org/language/operators#infix_(&),_infix_∩ > > HTH, Bill. > > > On Sat, Aug 31, 2019 at 8:59 PM Paul Procacci <pproca...@gmail.com> wrote: > > > > I'm not entirely sure if this is the correct answer, but if you define > your own custom character class > > with a 'regex' object, you can use that in the grouping. > > > > sub matching_chars(Str $chars_to_match, Str $_) { > > my regex x { $chars_to_match ** 1 }; > > m/<[<x>]>/; > > } > > > > The above worked for me in the very small testing I did. > > > > ~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 > > > > > > > > -- > > __________________ > > > > :(){ :|:& };: >