in reply to configurable tr///?

From the docs for tr...

Because the transliteration table is built at compile time, neither the SEARCHLIST nor the REPLACEMENTLIST are subjected to double quote interpolation. That means that if you want to use variables, you must use an eval():
eval "tr/$oldlist/$newlist/"; die $@ if $@; eval "tr/$oldlist/$newlist/, 1" or die $@;

It is said that "only perl can parse Perl." I don't even come close until my 3rd cup of coffee. --MidLifeXis