matz> gsubの場合,元の文字列を変更はしないのですが,gsubの内部で正
matz> 規表現のマッチが発生するため$4をはじめとするマッチ結果は更新
matz> されてしまいます.

なるほど、そういう意味で $4 が壊れるのですね。

matz> |所でわからなくなったぞ。
matz> |	f = $4
matz> |
matz> |これって、 f はあたらしい object 作るんでしたっけ?
matz> 
matz> ドキュメントを読んだだけではピンと来ないかも知れませんが,$1
matz> などは毎回新しい文字列を生成します.

なるほど。