From: William James Date: 2005-08-17T06:11:22+09:00 Subject: Re: Probably missing something simple here ... help {wimper} B. Angell wrote: > Am trying to read from a file and write to a number of files based on > the first 4 letters of the data line. Therefore, I want to be able to > write the line: A0037775830|lkajsdlkfjsaljf;lsakjfdsa;jf to file A003 > *and* append all of the A003 lines as well. Here is the hack I have > below, however, produces errors and I know I am missing something > simple/easy ..... as follows: > > #!/usr/bin/ruby -w > File.open("meshdata.txt") do |file| > while line = file.gets > a = line > b = a[0,4] > File.open(b,"w") do |afile| > puts a.afile > > end > end > end You are repeatedly opening a file that is already open. Each time you do that, you lose what you have already written. outfilename = ""; outfile = nil File.open("meshdata.txt") do |file| while line = file.gets b = line[0,4] if b != outfilename outfile.close if outfile outfilename = b outfile = File.open(outfilename,"w") end outfile.puts line end end outfile.close if outfile