From: "Jesús Gabriel y Galán" Date: 2011-06-14T02:43:18+09:00 Subject: Re: Regexp.match(line) question On Mon, Jun 13, 2011 at 7:32 PM, m b wrote: > > Hi, > I new to Ruby.  It's a lot of fun to learn.. > > if I do this: > > f=open('filename.dat','r') > str=f.read > > and then: > > str.each_line  do |line| >    /ruby/.match(line) > > ruby prints out variable line and say its a RegexpError > 'empty range in character class'  as if it interprets  line as a Regexp > What am I doing wrong?  There are a lot of strange characters in variable line, > maybe that is the issue? I'm not sure about the issue, but the usual idiom for this is: File.foreach("filename.dat") do |line| line.match(/ruby/) end This way: - The file handler is automatically closed for you, you don't have to ensure that you call close on it, it's done for you. - You only have one line at a time in memory, since that seems to be your unit of data. If the file is huge it will make a difference in the amount of memory you will consume at a time. In any case, String#match calls Regexp#match, so calling match on one or the other should make no difference. Can you show a small example of a file that breaks? Jesus.