Text::Levenshtein3pm
Calculate the levenshtein edit distance between two strings
Usage
use Text::Levenshtein qw(distance);print distance("foo","four");# prints "2"my @words = qw/ four foo bar /;my @distances = distance("foo",@words);print "@distances";# prints "2 0 3"
Overview
This module implements the Levenshtein edit distance, which measures the difference between two strings, in terms of the edit distance. This distance is the number of substitutions, deletions or insertions ("edits") needed to transform one string into the other one (and vice versa). When two strings have distance 0, they are the same.
To learn more about the Levenshtein metric, have a look at the wikipedia page <http://en.wikipedia.org/wiki/Levenshtein_distance>.
distance()
The simplest usage will take two strings and return the edit distance:
$distance = distance('brown', 'green');# returns 3, as 'r' and 'n' don't change
Instead of a single second string, you can pass a list of strings. Each string will be compared to the first string passed, and a list of the edit distances returned:
@words = qw/ green trainee brains /;@distances = distances('brown', @words);# returns (3, 5, 3)
fastdistance()
Previous versions of this module provided an alternative implementation, in the function "fastdistance()". This function is still provided, for backwards compatibility, but they now run the same function to calculate the edit distance.
Unlike "distance()", "fastdistance()" only takes two strings, and returns the edit distance between them.
ignore_diacritics
Both the "distance()" and "fastdistance()" functions can take a hashref with optional arguments, as the final argument. At the moment the only option is "ignore_diacritics". If this is true, then any diacritics are ignored when calculating edit distance. For example, "cafe" and "café" normally have an edit distance of 1, but when diacritics are ignored, the distance will be 0:
use Text::Levenshtein 0.11 qw/ distance /;$distance = distance($word1, $word2, {ignore_diacritics => 1});
If you turn on this option, then Unicode::Collate will be loaded, and used when comparing characters in the words.
Early version of "Text::Levenshtein" didn't support this version, so you should require version 0.11 or later, as above.
Repository
<https://github.com/neilbowers/Text-Levenshtein>
Copyright and license
This software is copyright (C) 2002-2004 Dree Mistrut. Copyright (C) 2004-2014 Josh Goldberg. Copyright (C) 2014- Neil Bowers.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Releases
8 releases since Debian 6.0 (Squeeze); the text changed 3 times.