>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? 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? 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