出沢です matz> $4の評価よりもgsubが呼ばれる方が前なので$4が壊れています.た matz> とえば ああ、やはりそのあたりが絡んでいたのか。 はじめ、 printf の前に $3.gsub!() して駄目だったのです。 で、このときは、 ことによると、$' とか $2 とかは 基の文字列を copy する事なく 基のもじれつに対する先頭位置と長さだけもっているのかな とかんがえたのです。 ならば、 gsub() なら、別の object を返すはずだから良かろう と思ったのですが、駄目なのですね。 所でわからなくなったぞ。 f = $4 これって、 f はあたらしい object 作るんでしたっけ? 新しいのを作るなら f = $4.dup で、代入は C で言えば ポインタの 代入ですよね。なのに、これはいいわけ??? f = $4 printf "%s%s <A HREF=\"#%s\">%s</A> %s %s\n", $`,$1,$2,$2,$3.gsub(/\s:/,"."),f なぜでしょうか?