contains the words "apple", "cherry" and "blossom".
Actually, there is much more ...
#!/usr/bin/perl -w
use strict;
my $search_word = shift
or die "search word required\n";
my @words = ();
my $count = 0;
open WORDS, "/usr/share/dict/words"
or die "can't open words file\n";
while (<WORDS>) {
chomp;
printf "%3d %s\n", ++$count, $_ if $search_word =~ /$_/i;
}
close WORDS;
And here is the result:
$ perl wsearch.pl owijfwapplelaskfiwejfcherryalkfwiofwfblossomowiejf
1 Al
2 apple
3 as
4 ask
5 blossom
6 cherry
7 err
8 he
9 her
10 Herr
11 Io
12 Los
13 loss
14 mow
15 of
16 so
17 we
I know it's a brute force, but it takes less than half second to give this result.
Consider that Perl RegEx engine is using a Boyer-Moore search algorithm, which is probably the fastest one available for text matching.