すみません、変数について教えてください。
1.sliceした場合、fの元の値が書き換わってしまうものなのですか?
2.sliceする前の値を得たい場合、どう記述すべきでしょうか?
3.gは何もしていないのに、値が変わるのはなぜでしょうか?

f = "abcdefg"
g = nil

g = f
print f,"<=f1回目\n"
print g,"<=g1回目\n"
print "---------\n"
charset = f.slice!(0,1)

print charset,"\n"
print f,"<=f2回目\n"
print g,"<=g2回目\n"
■結果
abcdefg<=f1回目
abcdefg<=g1回目
---------
a
bcdefg<=f2回目
bcdefg<=g2回目