From: Alpha Blue Date: 2009-12-03T06:08:24+09:00 Subject: Re: Need help with writefile line ranges within extensive file Thanks mate - I appreciate the short fix. I ended up having to do a lot more with the file and change it so I can spot issues in certain areas. So, I've rebuilt and adapted it as such: class EuiiiReader def initialize(writefile,filename) @writefile = writefile @filename = filename @provnum = /^\d{1,4}\=\{/ @owner = /owner\=/ @controller = /controller\=/ end def readfile File.open(@filename, "r") do |infile| @linenumarray = [] while (line = infile.gets) if (line =~ @provnum) linenum = $. @linenumarray += [linenum] end end end end def printmode(arg,match) if arg =~ match return true end end def writefile open(@writefile, "w") { |f| f.puts "Verifying File..." f.puts "=================" g = File.open(@filename, "r") a = g.readlines @linenumarray.each do |segment| badowner = 0 badcontroller = 0 f.puts "Line number #{segment} and #{a[segment - 1]}" if a[segment+5] =~ @owner || a[segment+6] =~ @owner || a[segment+7] =~ @owner f.puts printmode(a[segment+5],@owner) ? a[segment+5] : '' if a[segment+5] =~ @owner f.puts printmode(a[segment+6],@owner) ? a[segment+6] : '' if a[segment+6] =~ @owner f.puts printmode(a[segment+7],@owner) ? a[segment+7] : '' if a[segment+7] =~ @owner else badowner = 1 end if a[segment+6] =~ @controller || a[segment+7] =~ @controller || a[segment+8] =~ @controller f.puts printmode(a[segment+6],@controller) ? a[segment+6] : '' if a[segment+6] =~ @controller f.puts printmode(a[segment+7],@controller) ? a[segment+7] : '' if a[segment+7] =~ @controller f.puts printmode(a[segment+8],@controller) ? a[segment+8] : '' if a[segment+8] =~ @controller else badcontroller = 1 end if (badowner + badcontroller) == 1 f.puts 'FOUND a mismatch for owner/controller' if badowner == 1 f.puts 'Owner not found' else f.puts 'Controller not found' end elsif (badowner + badcontroller) == 2 f.puts 'No Owners or Controllers for Province' else # end end } end end k = EuiiiReader.new('compare.txt', 'Italy_alternate.eu3') k.readfile k.writefile -- Posted via http://www.ruby-forum.com/.