note
BrowserUk
<p>Probably not the most efficient implementation (and maybe incomplete), but if you can't get the modules to work, you could wrap this up as a subroutine.
<p><code>
#! perl -slw
use strict;
use Data::Dumper;
my $needle = 'the lazy cat';
my $haystack = 'the quick brown fox jumps over the lazy dog';
my @matches;
for my $start (0..length $needle) {
for my $len ($start+1 .. length $needle) {
my $substr = substr($needle, $start, $len);
push @matches, $haystack =~ m[($substr)]g;
}
}
my ($len, $longest) = 0;
length > $len and ($longest, $len) = ($_, length) for @matches;
print "The longest common substring between\n", $needle, "\nand\n", $haystack, "\nis '$longest'";
__END__
C:\test>249239.pl
The longest common substring between
the lazy cat
and
the quick brown fox jumps over the lazy dog
is 'the lazy '
C:\test>
</code>
<hr>
<font size=1>
<div>Examine what is said, not who speaks.</div>
<div align="right">
1) When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong. <br />
2) The only way of discovering the limits of the possible is to venture a little way past them into the impossible<br />
3) Any sufficiently advanced technology is indistinguishable from magic.<br />
Arthur C. Clarke.
</div></font>
249239
249239