I think you are right. Text::Levenshtein is better in this case because
String::Approx will match
substrings of the input. Here is one more thing.
If substitutions are not allowed, only inserts and deletes, you could
use
Text::WagnerFischer to set the cost of substitution so high that it will not be used.
use Text::Levenshtein;
use Text::WagnerFischer;
my $pat = 'AAB';
my @lst = qw(ABAB ABBA ABB ABABAAB);
my @dist1 = Text::Levenshtein::distance($pat, @lst);
my @dist2 = Text::WagnerFischer::distance([0, 1, 100], $pat, @lst);
my ($i, $item);
$i = 0;
foreach $item (@lst) {
print "Levenshtein distance of $item to $pat is ",$dist1[$i],"\n";
print "WagnerFischer distance of $item to $pat is ",$dist2[$i],"\n"
+;
$i++;
}