ちばです。

> したがって、(A)の場合、最初に 2 を代入された a のスコープは
> 代入された場所からそのブロックの終わりまでで、1 を代入された 
> a のスコープはそこからスクリプトの終わりまです。つまり最初の
> Procで代入された a と2番目の Proc で代入された a は別のもの
> になります。

上で

  2番目の Proc で代入された a

は

  begin ... end で代入された a

の誤りです。すみません。