Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Is there any API available in perl to find longest common substring from two strings

by Athanasius (Abbot)
on Dec 31, 2012 at 08:38 UTC ( #1011022=note: print w/ replies, xml ) Need Help??


in reply to Is there any API available in perl to find longest common substring from two strings

Hello rad_144, and welcome to the Monastery!

For finding the longest common substring, see the thread finding longest common substring which I referenced in my recent post Re^13: partial match between 2 files.

Update (1st January, 2013): After the comedy of errors documented in the updates to Re^13: partial match between 2 files, I finally came up with a solution using my own advice:

#! perl use Modern::Perl; my @paths = ( '/home/instance/domains/abcd/xyz/1.txt', '/a1234/domains/abcd/xyz/1.txt', '/a1234/topfolder/instance/domains/abcd/xyz/1.txt', # '/a1234/topfolder/instance/domains/abcd/xyz/2.txt', ); my $lcss = lcss($paths[0], $paths[1]); my $found = defined $lcss && $paths[0] =~ / \Q$lcss\E $ /x && $paths[1] =~ / \Q$lcss\E $ /x; if ($found) { for (@paths[2 .. $#paths]) { $lcss = lcss($lcss, $_); unless ($lcss && / \Q$lcss\E $ /x) { $found = 0; last; } } } say $found ? 'Found common path+file: ' . $lcss : 'No common path+file found'; # lcss() was written by BrowserUk, see [id://308451] sub lcss { my $strings = join "\0", @_; my $lcss; for my $n (1 .. length $strings) { my $re = "(.{$n})" . '.*\0.*\1' x (@_ - 1); last unless $strings =~ $re; $lcss = $1; } return $lcss; }

Uncomment the 4th path, and the match fails, as it should.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,


Comment on Re: Is there any API available in perl to find longest common substring from two strings
Download Code
Replies are listed 'Best First'.
Re^2: Is there any API available in perl to find longest common substring from two strings
by rad_144 (Initiate) on Jan 03, 2013 at 11:51 UTC
    Thanks for the code snippets. It really helped.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1011022]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2015-07-29 04:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (260 votes), past polls