From: Phlip Date: 2009-03-02T12:23:56+09:00 Subject: Re: Error when running script Brad Winborg wrote: > I did check the case and it was wrong. I changed it to match and it made > a difference. I still don't think its working correctly. If your curious > I have attached the text file that it is reading. > > my_path = "C:\\Ruby\\Text\\" Paths are much easier to manage using / , even on Windows. > WARNING = 0 > ERROR = 0 These are not the same as warning and error. And this... warnings = 0 errors = 0 ...provides better "ear" - better hints that we are counting things. > d = Dir.new(my_path) > > d.each do |fl| > unless fl == '.' or fl == '..' then Only use unless in a pinch. This is better style: if fl != '.' and fl != '..' > puts my_path + fl > File.open(my_path + fl, "r").each do |line| Try File.readlines(my_path + fl).each do |line| > if line =~ /ERROR/ then > error += 1 You don't need 'then'. It's allowed, but it makes the code more verbose. > elsif line =~ /WARNING/ then > warning += 1 > end > end > > end > end > puts warning.to_s > puts error.to_s puts implies .to_s. Try: puts "Warnings: #{warnings}; Errors: #{errors}" Now, would this work? warnings = File.readlines(my_path + fl).grep(/WARNING/).length You would be amazed what Ruby can pack into one statement! -- Phlip