On 8/16/05, B. Angell <lists / activepipes.com> 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 I'm at the end of a long day here, and I haven't bothered to try to understand your goals/requirements/etc, so forgive me if this is just a senseless babble. However, here's what comes to mind: #!/usr/bin/ruby -w File.open("meshdata.txt").each_line do |line| thingy = line[0,4] File.open(thingy,"a+") do |new_file| new_file.puts line end end If your input file is hooooj, you would probably want to sort it first, to minimize the number of times you open and close files.