From: yermej Date: 2007-12-07T00:35:19+09:00 Subject: Re: if /hello/ =~line On Dec 6, 6:38 am, Jano Svitok wrote: > On Dec 6, 2007 12:49 PM, Lee Jarvis wrote: > > Sometimes it's better to cache the /#{var}/ as in this case, new > regexp object is created on each pass through the cycle. > That might hurt the performance a bit. So: > > > var = "hello" > + var_re = /#{var}/ > > File.foreach "file.txt" do |line| > > - if /#{var}/ =~ line > + if var_re =~ line > > > puts "found it" > > break > > end > > end > > (This might apply for 1.8 MRI only, other interpreters might be > different): When the regex literal contains #{}, the object > is created on each pass through the code. In the other case it's > created only once. > > Jano You can also use the /o option, which tells Ruby to compile the Regex only once: var = "hello" File.foreach "file.txt" do |line| if /#{var}/o =~ line puts "found it" break end end