in reply to Re: Finding dictionary words in a string.
in thread Finding dictionary words in a string.
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 =~ /$_/; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Re: Finding dictionary words in a string.
by cchampion (Curate) on Mar 14, 2004 at 08:02 UTC | |
by Anonymous Monk on Mar 15, 2004 at 04:04 UTC | |
|
Re: Re: Re: Finding dictionary words in a string.
by toma (Vicar) on Mar 14, 2004 at 18:28 UTC |