Jeff Davis wrote:
> 
>> The only difference is that in the second case the block is anonymous.
>> In the first case, it has a name and so you can pass it around if you
>> want (e.g. recursively).
>>  
>>
>>
> That brings up another question: how do you call a function that accepts 
> a block if all you have is a proc object?

Prepend the Proc with a &:

def foo()
  yield
end

bar = proc { puts 'foo' }

foo bar   # Fails
foo &bar  # 'foo'

> i.e. what's the difference between the following:
> def foo(&p) p.call; end
> foo { puts 'foo' }
> and:
> def foo(&p) p.call; end
> p = proc { puts 'foo' }
> foo { p.call }
> 
> Are those the same? Is the latter the proper way to pass a proc object 
> as a block?

See above :)

> Thanks to all for your help. I'm just getting into Ruby and I really 
> like it so far (coming from Python/Perl/PHP).
> 
> Regards,
>    Jeff Davis

E