Alan wrote:
> File.open("test.rb").grep /.*$/ {|line|  print line }
> 
> I changed it from the following form:
> 
> File.open("test.rb").grep /.*$/ do |line|
>   print line
> end

It's because the precedence of curly bracket blocks ( {} ) and do/end 
blocks are not the same.

   File.open("test.rb").grep /.*$/ {|line| puts line }

is the same as

   File.open("test.rb").grep(/.*$/ {|line| puts line })

which means that the block is actually attached to `/.*$/', not #grep. 
That's what gives you the error.

   File.open("test.rb").grep /.*$/ do |line|
     print line
   end

is the same as

   File.open("test.rb").grep(/.*$/) {|line| puts line }

which is probably what you want.


Daniel