@x = glob('{a,b,c}'x3); # for testing: all permutations, plus many more $x = '(?:([a-c])(?!.*\1)){3}'; # regex for $i (@x) { $i =~ $x and say $i; # was $x =~ $i } #### abc acb bac bca cab cba #### @x = glob('{a,b,c}'x6); $x = '(?:a()|a()|b()|b()|c()|c()){6}\1\2\3\4\5\6'; # limited repeats allowed for $i (@x) { $i =~ $x and say $i; # was $x =~ $i } #### aaaabc aaaacb aaabac aaabbc aaabca ... cccbba cccbca ccccab ccccba #### @x = glob('{abc,bcd,cde}'x3); # permutations of 'abc/bcd/cde' $x = '(?:abc()|bcd()|cde()){3}\1\2\3'; for $i (@x) { $i =~ $x and say $i; # was $x =~ $i } #### abcbcdcde abccdebcd bcdabccde bcdcdeabc cdeabcbcd cdebcdabc