View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Nick Logan > Text-Levenshtein-Damerau-0.36 > Text::Levenshtein::Damerau



Annotate this POD


Open  0
View/Report Bugs
Module Version: 0.36   Source   Latest Release: Text-Levenshtein-Damerau-0.41


Text::Levenshtein::Damerau - Damerau Levenshtein edit distance.


        use Text::Levenshtein::Damerau;
        use warnings;
        use strict;

        my @targets = ('fuor','xr','fourrrr','fo');

        # Initialize Text::Levenshtein::Damerau object with text to compare against
        my $tld = Text::Levenshtein::Damerau->new('four');

        print $tld->dld($targets[0]);
        # prints 1

        my $tld = $tld->dld({ list => \@targets });
        print $tld->{'fuor'};
        # prints 1

        print $tld->dld_best_match({ list => \@targets });
        # prints fuor

        print $tld->dld_best_distance({ list => \@targets });
        # prints 1

        # or even more simply
        use Text::Levenshtein::Damerau qw/edistance/;
        use warnings;
        use strict;
        print edistance('Neil','Niel');
        # prints 1


Returns the true Damerau Levenshtein edit distance of strings with adjacent transpositions. Useful for fuzzy matching, DNA variation metrics, and fraud detection.

Defaults to using Pure Perl Text::Levenshtein::Damerau::PP, but has an XS addon Text::Levenshtein::Damerau::XS for massive speed imrovements. Works correctly with utf8 if backend supports it; known to work with Text::Levenshtein::Damerau::PP and Text::Levenshtein::Damerau::XS.

        use utf8;
        my $tld = Text::Levenshtein::Damerau->new('ⓕⓞⓤⓡ');
        print $tld->dld('ⓕⓤⓞⓡ');
        # prints 1



Creates and returns a Text::Levenshtein::Damerau object. Takes a scalar with the text (source) you want to compare against.

        my $tld = Text::Levenshtein::Damerau->new('Neil');
        # Creates a new Text::Levenshtein::Damerau object $tld



Scalar Argument: Takes a string to compare with.

Returns: an integer representing the edit distance between the source and the passed argument.

Hashref Argument: Takes a hashref containing:

Returns: hashref with each word from the passed list as keys, and their edit distance (if less than max_distance, which is unlimited by default).

        my $tld = Text::Levenshtein::Damerau->new('Neil');
        print $tld->dld( 'Niel' );
        # prints 1

        #or if you want to check the distance of various items in a list

        my @names_list = ('Niel','Jack');
        my $tld = Text::Levenshtein::Damerau->new('Neil');
        my $d_ref = $tld->dld({ list=> \@names_list }); # pass a list, returns a hash ref
        print $d_ref->{'Niel'}; #prints 1
        print $d_ref->{'Jack'}; #prints 4


Argument: an array reference of strings.

Returns: the string with the smallest edit distance between the source and the array of strings passed.

Takes distance of $tld source against every item in @targets, then returns the string of the best match.

        my $tld = Text::Levenshtein::Damerau->new('Neil');
        my @name_spellings = ('Niel','Neell','KNiel');
        print $tld->dld_best_match({ list=> \@name_spellings });
        # prints Niel


Arguments: an array reference of strings.

Returns: the smallest edit distance between the source and the array reference of strings passed.

Takes distance of $tld source against every item in the passed array, then returns the smallest edit distance.

        my $tld = Text::Levenshtein::Damerau->new('Neil');
        my @name_spellings = ('Niel','Neell','KNiel');
        print $tld->dld_best_distance({ list => \@name_spellings });
        # prints 1



Arguments: source string and target string.

Returns: int that represents the edit distance between the two argument. -1 if max distance is set and reached.

Wrapper function to take the edit distance between a source and target string. It will attempt to use, in order:

        use Text::Levenshtein::Damerau qw/edistance/;
        print edistance('Neil','Niel');
        # prints 1



Please report bugs to:


Nick Logan <>


This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

syntax highlighting: