rubyでファイル中の文字列を書き換える方法

やりたかったこと

以下のようなファイルを
abc.txt

<aaa></aaa>
<bbb></bbb>
<ccc></ccc>
<ddd></ddd>

以下のようなファイルへ書き換える
abc.txt

<aaa></aaa>
<bbb></bbb>
<ccc>hogehogehoge</ccc>
<ddd></ddd>

コード

#!/usr/bin/ruby

open("abc.txt","r+") {|f|
  f.flock(File::LOCK_EX)
  body = f.read
  body = body.gsub(/(^<bbb>).*(<\/bbb>$)/) do |tmp|
    "#{$1}hogehogehoge#{$2}"
  end 
  f.rewind
  f.puts body
  f.truncate(f.tell)
}

今のところ、疑問

f.truncate(f.tell)

これが何を意図しているのか、良く分かってない。