my $tr = "/a-z/n-za-m/"; my $trs = eval qq{sub {\$_[0]=~tr$tr}}; $s = "uryyb, jbeyq\n"; &$trs($s); print $s; #### { my %trd; sub trd { my $tr = $_[0]; $trd{$tr} ||= do { warn "compiling tr$tr"; eval qq{sub {\$_[0]=~tr$tr}} }; } } $t = $s = "hello, world\n"; &{trd("/a-z/n-za-m/")}($s); print $s; &{trd("/a-z/A-Z/")}($t); print $t; &{trd("/a-z/n-za-m/")}($s); print $s;