No, this one also counts similarities after the first differing character. $x = "abcfff"; $y = "abcggg"; correctly gives 3, but just try out $x = "abcfff"; $y = "abcgff"; which gives you 5 because of the matching "f"s.
This way it should work: $_=$x^$y; $n=s/[^\0]//?$-[0]:() A little toyed around with kynn's idea: for(split//,$x){$_eq substr($y,$n++,1)||last}$n x=$n<length$y -Christian > -----Ursprüngliche Nachricht----- > Von: Terje Kristensen [mailto:[EMAIL PROTECTED] > Gesendet: Mittwoch, 21. April 2004 07:49 > An: [EMAIL PROTECTED] Org > Betreff: RE: mini-golf: first differing position > > > This should work. > > $_=$x^$y;$n=s/\0//g||undef > > Terje > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, April 21, 2004 2:02 AM > > To: [EMAIL PROTECTED] > > Cc: [EMAIL PROTECTED] > > Subject: Re: mini-golf: first differing position > > > > > > > > > > X-Original-To: [EMAIL PROTECTED] > > Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm > > X-Spam-Status: No, hits=0.3 required=7.0 > > tests=NO_REAL_NAME > > X-Spam-Check-By: la.mx.develooper.com > > Date: Tue, 20 Apr 2004 19:57:27 -0400 (EDT) > > From: <[EMAIL PROTECTED]> > > > > > > > > > > We want to find out the first position $n at which > strings $x and $y > > differ. If $x eq $y, then $n is undef. If $x ne $y but $x is a > > prefix (aka initial segment) of $y, then $n should be > equal to length > > $x. The operation must preserve both $x and $y (i.e. destructive > > operations are disallowed). > > > > By way of baseline, here's an utterly uninspired solution: > > > > $n=0;while(($c=substr($x,$n,1)||undef $n) && $c eq > > substr($y,$n++,1)){;} > > > > It's worse than uninspired, actually. It's wrong. > > > > kj >