in reply to Re^3: How to use a variable in tr///
in thread How to use a variable in tr///

The "why not just eval?" referred to the case of embedding an eval'd tr/// in an s///e, which would be no better. But your cautions are valid. [Update: and addressed here]

Update:
Though for character replacement, I'd build the regex using a character class rather than alternation:

my $table_re = sprintf '[%s]', join '', map quotemeta, keys %table;

Caution: Contents may have been coded under pressure.