sub lcs { my $refmatrix=shift; my $refxlst=shift; my $refylst=shift; my $m=scalar @$refxlst-1; my $n=scalar @$refylst-1; foreach my $i (1 .. $m) { foreach my $j (1 .. $n) { if ($refxlst->[$i] eq $refylst->[$j]) { $refmatrix->[$i]->[$j] = $refmatrix->[$i-1]->[$j-1]+1; } elsif ($refmatrix->[$i-1]->[$j] >= $refmatrix->[$i]->[$j-1]) { $refmatrix->[$i]->[$j] = $refmatrix->[$i-1]->[$j]; } else { $refmatrix->[$i]->[$j] = $refmatrix->[$i]->[$j-1]; } } } return $refmatrix; }