Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

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

by Athanasius (Prior)
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
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 making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2014-07-13 05:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (246 votes), past polls