The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME

Text::Hunspell - Perl interface to the Hunspell library

DESCRIPTION

Text::Hunspell is an interface to the GNU Hunspell library.  GNU Hunspell is a
Free and Open Source spell checker.  The Text::Hunspell module is a thin XS
wrapper around the Hunspell C++ Library.  Hopefully this is obvious, but you
MUST have the Hunspell library installed on your system as a .so library,
before installing this module.  You also MUST have any hunspell dictionary
installed for "make test" to pass.  

Hunspell's location is http://hunspell.sourceforge.net

See BUILD NOTES and CURRENT ISSUES below before reporting any bugs.

This module has been built and passed all tests on the following platforms:

    perl 5.8.8 on Linux, gcc version 4.0.1 
    hunspell 1.2.8 or higher
    Mandriva Linux 2006
    Knoppix Linux (Debian Linux)

Please read SUPPORT below if you have trouble building Text::Hunspell.


INSTALLATION

Windows users see below.

1) Install Hunspell and a Dictionary

    Make sure you have a current version of Hunspell installed.
    You must install both the Hunspell program and a dictionary.
    They are distributed as separate packages. The dictionary can be
    copied anywhere, since at startup the full path of the .dic/.aff files
    will be givern to hunspell.

    Hunspell and the dictionary packages contain README files that include
    installation instructions.  Here's a basic overview:

    Hunspell must be installed first, then install the dictionary file and finally
    install the Text::Hunspell module.

    Hunspell installation example:
    1. download an untar hunspell
    2. cd hunspell
    3. ./configure
    4. ./make
    5. cd ./src/hunspell
    6. ./configure
    7. make
    8. copy makeso.sh file here
    9. sh makeso.sh and do manually the copy and 2 link commands
       as described at the end of makeso.sh
   10. cd ../tools
   11. ./configure
   12. make

 
    If you used a --prefix option to install Hunspell in a non-standard location you
    will need to adjust your path to include $PREFIX/bin.  The configure script
    for the dictionary needs to find programs installed in the previous step.


    At this point you should be able to run Hunspell in interactive mode.
    For example:
    cd hunspell/src/tools
    ./example full_path_aff full_path_dic file_to test


2) Build and install this Text::Hunspell module.

    $ perl Makefile.PL
    $ make
    $ make test
    # make install


    If you installed Hunspell in a non-standard location (for example, if
    you don't have root access) then you will need to tell Makefile.PL where to
    find the library.

    For example, if Hunspell was installed in $HOME/local (--prefix=$HOME/local)
    and the perl module should be installed in the perl library $HOME/perl_lib:

    $ perl Makefile.PL PREFIX=$HOME/perl_lib \
    CCFLAGS=-I$HOME/local/include \
    LIBS="-L$HOME/local/lib -lhunspell"

    $ LD_RUN_PATH=$HOME/local/lib make
    $ make test
    $ make install

    Perl must have been buit with thread support in order to work with Text::Hunspell.

WINDOWS USERS

Randy Kobes has provided a PPM and the following instructions for installing
Text::Hunspell on Windows.  Thanks very much Randy.

For installing on Win32, first get and install the "Full installer"
executable at

   http://hunspell.net/win32/

this will install Hunspell into a location such as C:\Program Files\Hunspell. You
will also need to fetch and install at least one of the precompiled
dictionaries found on the same page.

Make sure that the path to the Hunspell bin directory (e.g. C:\Program
Files\Hunspell\bin\) is in your PATH environment variable.  For help with
setting your path see "set environment variables" in the Windows Help
Utility.  You may need to reboot or open a new shell window after setting
your path.  The Hunspell .dll file must be located in the PATH before using
Text::Hunspell.

Then, to install Text::Hunspell, type at a DOS prompt (all on one line)

   C:\> ppm install http://theoryx5.uwinnipeg.ca/ppms/Text-Hunspell.ppd

for an ActivePerl 8xx version, or

   C:\> ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/Text-Hunspell.ppd

for an ActivePerl 6xx version.

If you wish to build Text::Hunspell from source:

If you want to build Text::Hunspell yourself, you'll need a C compiler, which
must be the same one that your Perl is built with (for ActivePerl, this means
VC++ 6). Assuming you have that, in addition to the "Full installer" binary
package at http://hunspell.net/win32/, you'll also need to get and install the
hunspell-dev package (also located at http://hunspell.net/win32/), which contains
the necessary .lib and .h files needed to compile the Perl module.

Like above, make sure the PATH environment variable points to the location of
the installed Hunspell .dll file before building Text::Hunspell.

Installation then proceeds as described for the Unix version:

   perl Makefile.PL
   nmake
   nmake test
   nmake install

with the additional requirement of passing to 'perl Makefile.PL' the
necessary arguments (e.g. INC and LIBS) to specify the locations of the lib
and header files, if these were installed in a non-standard location. Make
sure that if a non-standard location was used that this is added to your PATH
environment variable before running the tests.


SUPPORT

Before contacting me with problems building Text::Hunspell please try and debug
as much as possible.

For example, if "make test" fails, then run in verbose mode:

   make test TEST_VERBOSE=1

That may show at what test is failing.  It's easy to run the test
script manually -- and you can even edit and add a few print statements to
aid in debugging.

For example:

   perl -Iblib/lib -Iblib/arch t/test.t | less

Use of LD_RUN_PATH, CCFLAGS and LIBS as above may also help if the build
process fails.

Remember that you *must* have the English dictionary installed for tests to
pass (sorry, have to check against some dictionary).  Also, you may need to
set your LANG variable to "en_US" so that the English dictionary is selected.

If all else fails, use the request tracker at:

  http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-Hunspell


BUILD NOTES / CURRENT ISSUES

A number of people have reported the

    $speller->store_replacement()

test failing on some platforms.  I don't know why.  Search google to find out
why I don't know why.  The code (from what I can tell) looks like it should be
returning an error value, but fails on some platforms.  Until I can get a
better answer I'm going to assume Hunspell is broken and ignore the return value
in t/test.t.  So don't test the return value in your code, either.

Some users of OS X have reported the test failing after calling clear_session().
The test is suppose to see if a word added to the session is removed after calling
clear_session().  It's another error I have not been able to reproduce on the machines
I tested on.


"Pax" provided these notes:

    I just got Text::Hunspell to build and work under OpenBSD 3.7 and thought you
    might like a tiny suggestion: in the README, you might note that under this
    operating system you need to add -lstdc++ to the list of libraries you link
    against, e.g.:

            $ perl Makefile.PL \
                   PREFIX=/usr/local INSTALLDIRS=site \
                   CCFLAGS=-I/usr/local/include \
                   LIBS="-L/usr/local/lib -lhunspell -lstdc++"

    If you don't do this, then any attempt to use Text::Hunspell will throw
    thousands of unresolved symbol errors trying to load your shared object.
    This is against libhunspell in /usr/local/lib installed from the hunspell
    port in the OpenBSD 3.7 ports tree, FWIW.


A number of Solaris uses have reported the need to set:

    LDFLAGS='-L/usr/local/lib -R/usr/local/lib'

and also having to copy libstdc++* to /usr/lib.  YMMV.


Changes compared to Hunspell::text

hunspell.h was modified, since classe Hunspell was heavily modified between
1.2.8 and 1.4.x, among others methods spell and suggest got new parameters,
that causes the function name to get modified from U _ZN8Hunspell5spellEPKc to
U _ZN8Hunspell5spellEPKcPiPPc