in reply to Re: If there a way to find the location of the first difference between two strings?
in thread If there a way to find the location of the first difference between two strings?

I still needed to know how they compare (lt eq gt), so I did the following:

srand( 711 ); . . . sub case2 { my $s1 = 'a' x 39 . 'b'; my $s2 = 'a' x 39 . chr( 98 + rand(4)); my ( $cmp, $loc ) = Cmp_and_Loc ( $s1, $s2 ); } sub Cmp_and_Loc { my ( $s1, $s2, undef ) = @_; my $t = 0; my $cmp = $s1 cmp $s2; if ( $cmp ) { $t = $s1 ^ $s2; $t =~ /^\0*)/; $t = $+[0]; } return ( $cmp, $t ); }

This appeared to work since if the strings are equal the sub returns 0,0. I will test your variation, but it still flies compared to anything I tried. Using the rand(4), I think I was able to test all combinations.

As always, when someone shows you how to do it correctly, it becomes easy :-)

Thank you

"Well done is better than well said." - Benjamin Franklin

  • Comment on Re^2: If there a way to find the location of the first difference between two strings?
  • Download Code