in reply to replace text using hash

This is just the concept, not the code. It would make more sense for a large dictionary and a small paragraph. For example, if the dict hash has 100,000 entries, and the paragraph has 1000 words, you don't want to do 100,000 substitutions for the paragraph, or make a 100,000 word long regexp.

You want to use a hash solution, (which eliminates the possibility of ordering), here is one way to do it. When you see a three word pattern for your dictionary, like "aa bb cc" -> "xyz", make three entries

$dict{"aa bb cc"} = "xyz"; $cont{"aa bb"} = 1; $cont{"aa"} = 1;

Now when it comes time to translate, read the file word for word. If the next words are "pp qq rr ss...", look up $cont{"pp"} if it is =1, then look up $cont{"pp qq"}, addding words until you have a phrase that is not in %cont. Now look for this phrase in %dict, and if not found drop the rightmost word and retry.