in reply to Should string inequality operators return the point the of divergance?

Hi,

While this is a neat idea, I think Perl 6 has a better return value of ineq ops. They will return something that is a boolean, but also retains the value from one of the operands (I think it is the right). This will allow you to do wonderful things like:

3 <= $x <= 5

While reading this, however, I wonder what would be the best way to locate the divergence point in a pair of strings. Here is what I came up with off the top of my head. I guess it would be more efficient to use substr to iterate over and compare each character, but I am too lazy for that.

#!perl -l sub firstdivergence { my $diff = $_[0] ^ $_[1]; $diff =~ /[^\x00]/g; pos $diff - 1 } sub lastdivergence { my $diff = $_[0] ^ $_[1]; $diff =~ /[^\x00]\x00*$/g; pos $diff - 1 } print firstdivergence 'axcd', 'abced'; # prints 1 print lastdivergence 'axcd', 'abced'; # prints 4

Ted Young

($$<<$$=>$$<=>$$<=$$>>$$) always returns 1. :-)