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


in reply to Re: Small examples of string eval
in thread Small examples of string eval

In my opinion, eval EXPR (as opposed to eval BLOCK) should be used only as a last resort. Your code is a prime example. It breaks as soon as someone places -, } or \ in %charmap. The following does not, and avoids eval EXPR entirely:

while (<>) { s/(.)/exists $charmap{$1} ? $charmap{$1} : $1/seg; print; }

(No, the /e is not the same as eval EXPR. There's no dynamic code generation. /ee, on the other hand, would be the same as eval EXPR.)