<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[BOL: Perl script for calculate Levenshtein distance]]></title>
	<link>https://bioinformaticsonline.com/snippets/view/34560/perl-script-for-calculate-levenshtein-distance?</link>
	<atom:link href="https://bioinformaticsonline.com/snippets/view/34560/perl-script-for-calculate-levenshtein-distance?" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/snippets/view/34560/perl-script-for-calculate-levenshtein-distance</guid>
	<pubDate>Fri, 08 Dec 2017 03:49:33 -0600</pubDate>
	<link>https://bioinformaticsonline.com/snippets/view/34560/perl-script-for-calculate-levenshtein-distance</link>
	<title><![CDATA[Perl script for calculate Levenshtein distance]]></title>
	<description><![CDATA[<code>sub levenshtein_dist {

   my ($str1, $str2) = @_;
   my ($len1, $len2) = (length $str1, length $str2);

   if ($len1 == 0) {
       return $len2;
   }
   if ($len2 == 0) {
       return $len1;
   }

   my %mat;

   for (my $i = 0; $i &lt;= $len1; ++$i) {
       $mat{0}{$i} = $i;
       $mat{1}{$i} = 0;
   }

   my @ar1 = split //, $str1;
   my @ar2 = split //, $str2;

   for (my $j = 1; $j &lt;= $len2; ++$j) {
       my $p = $j % 2;
       my $q = ($j + 1) % 2;
       $mat{$p}{0} = $j;
       for (my $i = 1; $i &lt;= $len1; ++$i) {
           my $cost = 0;
           if ($ar1[$i-1] ne $ar2[$j-1]) {
               $cost = 1;
           }
           $mat{$p}{$i} = min($cost + $mat{$q}{$i-1},
               $mat{$p}{$i-1} + 1, $mat{$q}{$i} + 1);
       }
   }

   return $mat{$len2%2}{$len1};
}</code>]]></description>
	<dc:creator>Jit</dc:creator>
</item>

</channel>
</rss>