>>555
dup ってのがあるので、これを使って変数への束縛時に明示的に複製を
作ってから束縛してやれば(555の)期待通りの動きをします。方針は
合っています。

hoge = "abcdefg"
hoge2 = hoge.dup
hoge[2, 3] = "123"
hoge == "ab123fg"
hoge2 == "abcdef"