David A Black (The Well Grounded Rubyist, Chapter 6) presents the following code:
def block_local_parameter x = 100 [1,2,3].each do |x| puts
What you're seeing is the behavior for Ruby 1.8.x. Variable scope for blocks was introduced in 1.9, switch to 1.9.x and you will get the same results as in the book.