in reply to Selecting the difference between two strings
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?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Selecting the difference between two strings
by qazwart (Scribe) on Sep 26, 2006 at 21:56 UTC | |
by hgolden (Pilgrim) on Sep 26, 2006 at 22:22 UTC | |
by qazwart (Scribe) on Sep 27, 2006 at 03:42 UTC | |
by graff (Chancellor) on Sep 27, 2006 at 03:37 UTC | |
by qazwart (Scribe) on Sep 27, 2006 at 04:27 UTC |