in reply to Regex question once-only use of chars in a charset

I think it can be as simple as this:
use Modern::Perl; open my $WORDLIST, '<', './wordlist.txt' or die $!; my $available = 'AABCDEF'; $available = join '?', sort split '', $available; $available .= '?'; while (<$WORDLIST>) { chomp; my $sorted = join '', sort split ''; say if $sorted =~ /^$available$/io; }
Running this script with your 'AABCDEF' gives me the following results:
abe ace aced baa bad bade be bead bed cab cad cade cafe dab dace deaf deb decaf fab facade face faced fad fade fed
I use a 58,000 elements wordlist and it needed less than a few seconds to generate this result.


A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James