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 <= 5While 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. :-)
|
|---|