in reply to Detecting transpositions

Here's another version that uses String::DiffLine. It's about 3 times faster than my previous post, according to Benchmark.
sub comp2 { return undef if (length($_[0]) != length($_[1])); my $i = diffline($_[0],$_[1]); if ( ($i < length($_[0])) && (substr($_[0],$i+1,1) eq substr($_[1],$i,1)) && (substr($_[0],$i,1) eq substr($_[1],$i+1,1)) && (substr($_[0],$i+2) eq substr($_[1],$i+2)) ) { return $i; } return undef; }

String::DiffLine needs some tweaking to compile (change sv_undef to PL_sv_undef in the .xs file), but it seems to be quite fast.