my $letters = shift @ARGV; my @letters = split //, $letters; my $pat = qr/^[$letters]+$/; #### my $wordlist = 'words.en.list'; # assumed English wordlist my @words = (); { open my $words, '<', $wordlist or die "$wordlist: $! $^E"; while (<$words>) { push @words, $_ if m/$pat/ } close $words; } #### sub count_letters ($) { my $word = shift; my %word = (); $word{$_}++ for split //, $word; return \%word; }