Here's the first thing I thought of:
There are probably better ways :-)#!/usr/bin/perl my $s1 = "//depot/Efp/Celox/CELOX-3.5.0/CeloxStart.sln"; my $s2 = "//depot/Efp/Celox/MAIN/CeloxStart.sln"; @s1 = split "/", $s1; @s2 = split "/", $s2; my $i = 0; $i++ while $s1[$i] eq $s2[$i]; # find end of common begin +ning my $j = -1; $j-- while $s1[$j] eq $s2[$j]; # find beginning of common + end print join("/", @s1[$i..(@s1+$j)]), "\n"; print join("/", @s2[$i..(@s2+$j)]), "\n";
update: Though I have to wonder why you're worrying about efficiency. You only have to do this for "thousands of records". Is that really "thousands of records per second" or something where efficienct execution really matters? Or are you just prematurely optimizing?
In reply to Re: Selecting the difference between two strings
by duff
in thread Selecting the difference between two strings
by qazwart
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |