@matches = ($input =~ m/
(.{1}?)
(?{
$chars{$^N}++;
})
/xg);
####
map {$wordCharCount{$_}++} (split(//,$word));
####
use strict;
use warnings;
use Data::Dumper;
my $word='perlmonks';
my %wordCharCount;
my @matches;
my $input;
my %chars;
my $boolean=1;
my $k;
map {$wordCharCount{$_}++} (split(//,$word));
while (<>) {
$input = $_;
if (/^[$word]*$/) {
#print "candidate: $_";
@matches = ($input =~ m/
(.{1}?)
(?{
$chars{$^N}++;
})
/xg);
foreach $k (keys %chars) {
$boolean = ($wordCharCount{$k} >= $chars{$k}?1:0) && $boolean;
# print "$wordCharCount{$k} <=> $chars{$k} yields $boolean\n";
}
print if $boolean;
#print "hit: $_" if $boolean;
undef %chars;
$boolean=1;
}
}
####
C:\chas_sandbox>lbu.pl WORDS.KNU
e
el
elk
elks
elm
elms
els
em
en
enol
eon
eons
k
kelp
ken
keno
kern
kerns
l
lemon
lemons
lens
les
lo
lone
loner
loners
lop
lope
loper
lops
lore
lorn
lose
loser
me
melon
melons
men
mens
mer
meson
ml
mole
moles
monel
moner
monk
monks
mop
mope
moper
mopes
mops
more
morel
mores
morn
morsel
n
ne
neo
no
noes
nope
nor
norm
norms
nose
o
om
omen
omens
omer
on
one
ones
ons
op
open
opens
or
ore
ores
ors
pel
pels
pen
pens
peon
per
perk
perm
person
peso
poem
poems
poke
poker
pokes
pol
pole
poles
pome
pon
pons
pore
pores
pork
porn
pose
poser
pre
pro
prole
prom
prone
pros
prose
r
re
rep
reps
roe
roes
role
roles
romp
romps
rope
ropes
rose
s
sen
senor
ser
sermon
skelp
skep
sloe
slop
slope
sloper
smoke
smoker
snore
snorkel
so
soke
sole
solemn
soln
some
son
sone
sop
sore
sperm
splore
spoke
spoken
spore