rubyで定数の中身が書き換えられてしまう?

$ irb
irb(main):001:0> TESTSTR="apple orange"
=> "apple orange"
irb(main):002:0> teststr=TESTSTR
=> "apple orange"
irb(main):003:0> teststr.gsub!('apple','banana')
=> "banana orange"
irb(main):004:0> TESTSTR
=> "banana orange"

これっておかしくないですか?

$ ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-freebsd6]

報告したいところですが、MLに入ると大量のメールが届くのがめんどくさいですねぇ。

あ。でもこれはやっぱりおかしい。

$ irb
irb(main):001:0> TESTSTR="apple orange"
=> "apple orange"
irb(main):002:0> TESTSTR.gsub!('apple','banana')
=> "banana orange"

期待する結果:TESTSTRは定数なので、書き換えようとしたらエラーになってほしい
現在の結果:gsub!を使うと書き換えられてしまう

irb(main):003:0> TESTSTR="hogehoge"
(irb):3: warning: already initialized constant TESTSTR
=> "hogehoge"

 つまり、オブジェクトごと置き換えようとしたときはエラーになるけど、オブジェクトの中身は変更可能ということでしょうか。うーん。

#しょうがないのでyahooメールでMLに入って相談することにした。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43777