メソッド中で変数を書き換えられる場合と書き換えられない場合の区別がいまだに分からないのですが、
X=[1,2,3]
def f X[1]=4 end
大文字(const配列?)のくせにこれは書き換え成功する。

x = 1
def g x=2 end
これはスコープ内で局所変数と解釈されて、書き換えられない。

Y=1
def h Y=2 end
これは定数書き換えが不正と解釈されて通らない。

h()は仕方ないとしても、g()と同じ動作は欲しいので、どう実現すればいいか教えてください。
ポインタっぽいのがあると一番いいのですが・・・。