my %rot; @rot{'A'..'M'} = ('N'..'Z'); @rot{'N'..'Z'} = ('A'..'M'); @rot{'a'..'m'} = ('n'..'z'); @rot{'n'..'z'} = ('a'..'m'); *rot13builttr = eval 'sub { local $_ = @_ ? $_[0] : $_; tr{' . join('', map quotemeta, keys %rot) . '} {' . join('', map quotemeta, values %rot) . '}; return $_; }';