my $s = "A$str"; for (my $i = 1; $i < length($s) ; $i++) { substr($s, $i, 1, chr($shifts[ord(substr($s, $i, 1))])); } #### my $s = "A" . pack "C*", map $shifts[$_], unpack "C*", $str;