I an new to Ruby, but there seems to be something
quite wrong with temporary variables inside blocks
having any impact outside the block.

code snippet1:

animal = %w( cat dog cow duck )
vegetable = %w( tomato carrot onion )
vegetable.each { |animal| puts animal }
p 'now animal is: ', animal  # result is 'onion'!!!

The scope of a temporary variable
declared in a block (such as |animal|)
should not extend beyond the block.

You don't need new squiggles, just
clearer definitions of what you have.

-- doug edmunds
   my 2 cents.