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