JediWizard has asked for the wisdom of the Perl Monks concerning the following question:

Wise Monks,

I'm looking for a module to perform "spell-check" on given words. I had done this before is a windows environment, using OLE to access Microsoft Word's spell-check functions. That was a nightmare, and thank god I'm doing this now in a linux environment. I have been searching cpan, of course, and came up with Text::Aspell. I was just wondering if any of my fellow monks had used this library before and could share their thoughts on it? Also if anybody has done this with a different module and could give me a tip?

As Always, any wisdom shared is much appriciated.

May the Force be with you

Replies are listed 'Best First'.
Re: Spell Check Module
by mayhem (Hermit) on Feb 10, 2005 at 18:01 UTC
    I recently wrote a spell checking program and used Text::Pspell and found it quite simple to use. The only noted distinction on CPAN is that Aspell forks to search and Pspell is a form of Aspell using "fast". You can see the benchmark for 400 words there (18.44 for Aspell, .63 for Pspell). Hope this helps!
Re: Spell Check Module
by gopalr (Priest) on Feb 11, 2005 at 05:45 UTC
Re: Spell Check Module
by Errto (Vicar) on Feb 10, 2005 at 21:09 UTC

    Text::Aspell is a good module, and I recommend it highly. Also, I think mayhem may be misunderstanding the situation regarding forking. Text::Aspell does not fork: it is an XS module. You should use Text::Aspell if you are using GNU Aspell 0.50 or above. This has been the only officially supported version for over 2 years now so I recommend that. If you need to use an older aspell, then you would want the Text::Pspell module. That is the difference between the two.

    Update: Calling the MS Word spell-checker through OLE is a particularly bad idea not only for system-dependency and reliability issues, but also because it is a violation of the Microsoft EULA.

    Update: On prompting from Mr. Muskrat, I am now trying to find a reference for the claim I make in the above paragraph. I can't find one. If you know of one please help me out.