Ruby is, indeed, a very well designed language.
But here is one aspect of Ruby's scoping rules which might be worth of some
improvement.

At present (Ruby-1.6.2) the Ruby scoping rules stipulate that inside a block
(either {...} or do...end) a new local variable is created _ONLY_ if _NO_ such a
variable of the same name exists in any of the enclosing scopes. On the other
hand if there is already such a varible in an enclosing scope it will used in
the inner block instead of creating a new variable.  This rule is very
convenient in many cases.  For example:

x = 1
{
  x = 7 # the 'x' binding is reused from the outer scope
  y = 0 # new variable 'y' (local to this block) created
}
x  # -> 7
y # raise NameError: undefined local variable


On the other hand in some cases one wants to be able to create a local variable
in the inner block even though a variable with the same name already exists in
one of the enclosing scopes.

# PROPOSED FEATURE:
x = 0  #line_1
{
  my x = 7  # new varible 'x' shadowing 'x' from line_1 
  x  # -> 7
}
x    # -> 0


I guess it should not be hard to add this functionality to the language. 
Any thoughts?

Thanks,
--Leo <slonika at yahoo dot com>