http://www.perlmonks.org?node_id=1056010


in reply to Re^6: using hashes
in thread iterating hash keys?

Hyphens aren't special outside of a character class. What makes you think they are at fault?

If your 'words' might contain punctuation, you can escape meta characters using quotemeta or synonymously \Q .. \E

s/\b\Q$find\E\b/$replace/g

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Replies are listed 'Best First'.
Re^8: using hashes
by R56 (Sexton) on Sep 27, 2013 at 17:48 UTC

    Imagine these values:

    banana => 25

    bana => 20

    bana-na => 15

    na => 10

    For the translation to, let's say:

    bana-na,banana

    Currently the output is:

    20-10,25

    That's what made me thought the hyphens were a special case...

      No, but they are being marked as word boundaries, and so they pass the regex I gave before. For the situation you've described, the only obvious solution I can see is to traverse the key list from long to short as I've shown in Re^5: using hashes. Things get messy with replacement lists when your keys are not independent.


      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

        I see... Thanks again!