in reply to abbreviation checking

Frankly, I don't think that Text::Soundex is the way to go, it is most probably too coarse a measure for what you want to achieve.

Apart from String::Approx there's also Text::WagnerFischer and Text::Levenshtein, Both are string distance measures. I'd use a gradual refinement, starting with a large threshold value to collect candidates to be replaced and taking smaller values until the noise level is acceptable. If the lists of words are not too large I'd valiidate it manually so that each word corresponds to the right set of abbreviations. After that, it's a simple matter of substituting strings.

Just my 2 cents, -gjb-

Update: You might also want to have a look at Text::KeyboardDistance to catch typos.