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

Polyglot has asked for the wisdom of the Perl Monks concerning the following question:

Greetings to all,

I asked in the chat window several days ago about how to accomplish this, and tye provided me a good answer using map and sort. Unfortunately, my laptop crashed shortly thereafter, and I lost his answer. (That'll teach me, ha!) However, there are a couple of complicating factors that tye may not have addressed even then, and I'm looking for wisdom on a succinct and safe way of accomplishing this.

Here's what I have:

  1. A file containing a tab-delimited list of words to exchange for modern spellings/equivalents, followed by a third column for any stopwords which should not have substitutions done in them.
  2. A file containing a list of files in which substitutions must be made.
  3. Over a hundred such files needing to be updated.
  4. The target language is Asian, where 1) there are no spaces between words; and 2) the encoding will be UTF-8. (This is significant, because any regexp must be sensitive to this, or it will fail.)
Here's an "English-ised" example of the words list file:

WORDREPLACEMENTSTOPWORDS
scoretwentyfourscore,scored,scores
corecenterencore,coregent
centrecenter 
travelledtraveled 
hasn'thas not 
JohannJohnJohannesburg

So, what I need to do is substitute each word in the first column for the word(s) in the second column, except where the word in the stopwords column is matched. While this seems like a simple scenario, I'm struggling to wrap my brain around it. I'm just beginning to grasp the concepts of map and join, and their syntax, but would much appreciate some ideas for how to accomplish this.

Blessings,

~Polyglot~