Here is a small example to write something at the beginning of a file
which works fine so long as the length of this item doesn't change.
#-----------------------------------------------
#timer to track time I work on medicine
#version 1.3 8/12/07
# sleep added
# total time computed and displayed
rw = "r+"
$stdout.sync = true
begin
fo = File.new("time_study.txt",rw)
rescue
rw = "w+"
retry
end
old_chapter = fo.read(3)
if old_chapter == nil
fo.write("00\t *** \t \n")
p "Start a new file"
else
puts old_chapter
end
fo.seek(0,IO::SEEK_SET)
time_start = Time.now
prev_chapter = fo.read(2)
puts "Start at chapter #{prev_chapter}"
puts "Enter chapter to start"
fo.seek(0,IO::SEEK_SET)
chapter = gets.chomp
fo.write("#{chapter}")
time_end = Time.now
fo.seek(0,IO::SEEK_END)
fo.write("#{time_start.to_i} #{time_end.to_i} #{(time_end -
time_start)}\n")
fo.seek(0,IO::SEEK_SET)
total_time = 0.0
fo.each do |x|
xa = x.split
total_time += xa[2].to_f
end
puts "Total time Hours = #{total_time / 3600.0}"
sleep 10
fo.close