NAME

SYNOPSIS

DESCRIPTION

This module provides a way of searching for CPAN modules whose name may be misspelt. For example, if a user accidentally types "Lingua::Stopwords" when looking for the module "Lingua::StopWords", the common cpan clients will not be able to function:

cpan Lingua::Stopwords

gives

Warning: Cannot install Lingua::Stopwords, don't know what it is.
Try the command
i /Lingua::Stopwords/
to find objects with matching identifiers.

CPAN::Nearest supplies a spelling-mistake tolerant search for the most similar name, intended for people making tools like cpan, cpanm, pm-uninstall, and anything else which needs to use the CPAN packages list. CPAN::Nearest was written to be fast enough for practical use.

CPAN::Nearest was inspired by the helpful "git" version control system, which provides suggestions for spelling mistakes.

FUNCTIONS

search

my $close_name = search ($file, $module_name);

Search the package detail file $file for a module named $module_name and return the closest name. E.g. if you search for "Harry::Potter",

my $close_name = search ($file, 'Harry::Potter');

the value in $close_name, the closest CPAN module, is "Data::Lotter".

The file specified by the first argument, $file in the example, is usually found at ~/.cpan/sources/modules/02packages.details.txt.gz on a Unix-like system. This may be specified as the file name. This module can read either a compressed or uncompressed version. There is a speed increase of 10-20% when an uncompressed file is used.

FILES

Users of the cpan utility supplied with Perl may find the file listing the CPAN modules in ~/.cpan/sources/modules/02packages.details.txt.gz. Others can download the file from the directory /modules/ of any CPAN mirror.

STANDALONE PROGRAM

The distribution includes a standalone program called "nearest-module" as shown in this blog entry. To use this program, edit the file nearest-module.c in the top level of the distribution to point to the name of the file 02packages.details.txt or 02packages.details.txt.gz on your system, and compile it with