"Paul Archer" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
[snip] > > If anyone can offer general improvements to that approach, that'd be > great--but what I'm really interested in is finding the first element that > differs, and maybe the last as well. If there were any easy way to find > that, say, the first character that differs is at position 120, and the last > character that differs is at position 135, then I only have to loop through > 15 characters, not 160. Probably the quickest way to do this in perl is as follows.... ---------------------------------------- #!/perl -w use strict; my $string1 = "The quick brown fox."; my $string2 = "The Kuick brUwn fox."; my $string_xor = ("$string1" ^ "$string2"); $string_xor =~ /^(\0*)/; print "Number of equal bytes at the front of the string = " . length($1) . "\n"; $string_xor =~ /(\0*)$/; print "Number of equal bytes at the end of the string = " . length($1) . "\n"; ---------------------------------------- the xor op (^) will return a string, every matching byte of which will be null, every mismatching byte will have some bit (literaly) set. so the all first regex does is match the all the null bytes it can find from the front of the string, the length of the string is equivalent to the number of identical chars at the front. The second regex is the same, just working from the end. You could extend this and translate all the non-null values to something you could then search for that value with index. This would give you the positions of all the bytes that were different... my $string_xor = ("$string1" ^ "$string2"); my $pos = 0; while ( ($pos = index($string_xor, 'X', $pos)) != -1) { print "==> $pos\n"; $pos++; } Hope this helps, Rob > > TIA, > > paul > > > --------------------------------------------------------------------- > On the side of the software box, in the "System Requirements" section, > it said "Requires Windows 95 or better". So I installed Linux. > --------------------------------------------------------------------- -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]