Great... got it! :) Now my little script is running... Thanks for the help (again)...
/juman On Wed, Mar 24, 2004 at 09:34:58AM -0600, James Edward Gray II wrote: > On Mar 24, 2004, at 4:31 AM, juman wrote: > > >I have two strings I want to compare doing some kind of fuzzy matching? > >Is there some good way to that in perl or could someone help with a > >routine matching word by word and giving a percental result. > > > >Like > > > >String 1 : This is a ten characters long string is it not > >String 2 : This is not so long > > > >String 1 compared to String 2 gives 40% (four words are the same) > >String 2 compared to String 1 gives 80% (four word are the same) > > See if this gives you some ideas: > > #!/usr/bin/perl > > use strict; > use warnings; > > my $string1 = 'This is a ten characters long string is it not'; > my $string2 = 'This is not so long'; > > print compare_words($string1, $string2), "%\n"; > print compare_words($string2, $string1), "%\n"; > > sub compare_words { > my($str1, $str2) = @_; > > my @words = split ' ', $str2; > my $in_both_count = 0; > my %seen; > foreach (split ' ', $str1) { > next if $seen{$_}++; > $in_both_count++ if $str2 =~ m/\b$_\b/; > } > > return sprintf '%.0f', $in_both_count / scalar(@words) * 100; > } > > __END__ > > James > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>