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