I couldn't resist speeding it up a bit. A commonly used trick in search engines is to shift everything to upper case.
Avoiding the i flag in the regular expression roughly doubles the speed, on my machine at least.
I also used Storable to create a slightly faster-loading dictionary.
#!/usr/bin/perl -w use strict; use Storable; my $search_word = uc shift or die "search word required\n"; my @words = (); my @dict; my $rdict; my $count = 0; if (not -e 'words.sto') { open WORDS, '/usr/share/dict/words' or die "can't open words file\n"; while (<WORDS>) { chomp; push @dict, uc $_; } close WORDS; $rdict= \@dict; store $rdict, 'words.sto'; } else { $rdict= retrieve('words.sto'); } for (@$rdict) { printf "%3d %s\n", ++$count, $_ if $search_word =~ /$_/; }
In reply to Re: Re: Finding dictionary words in a string.
by toma
in thread Finding dictionary words in a string.
by ehdonhon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |