From: James Dechiaro Date: 2008-05-13T03:52:21+09:00 Subject: array diff Hello I am new to ruby and trying to do a diff on two csv files. I am putting each row into an array and then subtracting the arrays into a new array, then taking that array and printing out the records. The problem I am running into is I would like the badRecords method to return the actual record lines that are not present in csv2.csv but instead it is returning all records in csv1.csv. The other problem I see is the code is running rather slow, cpu usage spikes up to 99% when running. Any insight on improvements would be appreciated. Thanks! #!/usr/bin/env ruby -wKU require 'rubygems' require 'faster_csv' def Array1 getNumber = FCSV.open("csv1.csv") getNumber.collect do |row| return row[1] end end def Array2 getNumber = FCSV.open("csv2.csv") getNumber.collect do |row| if (row[5].include?("Originating")) && (row[41].include?("y")) return row[20] end end end def SumArray SumArray = Array1 - Array2 if SumArray.empty? puts "records have been validated" Process.exit!(0) else return SumArray end end def badRecords my_file = File.open('badRecords.csv','w') records = FCSV.open("csv1.csv") records.collect do |row| row[1].eql?(SumArray) my_file.puts row.inspect.gsub(/\[|[a-z]*\]$/, "") end my_file.close end end badRecords -- Posted via http://www.ruby-forum.com/.