in reply to Re^4: Comparing 2 different-sized strings
in thread Comparing 2 different-sized strings

could you just explain what's going on inside the map function please?

Sure.

sub fuzzyMatch { my( $rHay, $rNee, $misses ) = @_; my $lNee = length $$rNee; my $min = $lNee - $misses; map { ( ( substr( $$rHay, $_, $lNee ) ^ $$rNee ) =~ tr[\0][] ) >= $min ? $_ : () } 0 .. length( $$rHay ) - $lNee; }

Hope that clarifies things little. Continue to ask about anything that isn't clear.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^6: Comparing 2 different-sized strings
by AdrianJ217 (Novice) on Aug 11, 2013 at 08:43 UTC
    Hi, Thank you again for all your patience and helping me. Can you tell me why the map counter is from 0 to length(hay)-length(nee) and why not just from 0 to length(nee)?
      why not just from 0 to length(nee)?

      Because if you compare at position lenght( hay), you aren't comparing anything.

      Take the case of a 20-byte haystack:acgtacgtacgtacgtacgt and a 4-byte needle: acct; at position 20:

      000000001111111111112 012345678901234567890 acgtacgtacgtacgtacgt acct

      The last position you can get a full match is at 20-4 position 16:

      000000001111111111112 012345678901234567890 acgtacgtacgtacgtacgt acct

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        Hi, Thank you so much for your help. Could you just tell me what the "for" is when you call the subroutine in the main program? I have seen "for" only in the context of a for loop where you also supply the 3 parameters like initial index, final, and increment. By the way, everything else you explained to me I completely understood and my script now works perfectly. Thank you so much!!