ローカル変数に関して、よくわからないことがあるので教えてくだ さい。 下に示すプログラムの出力結果は | a | a となって期待通りなのですが、1行目のx = nilを取ると | a | nil となってしまいます。後者では、2回目のprintの実行時に参照して いるxが、イテレータ内のスコープではなく、トップレベルのスコー プのものになっているんじゃないかと想像するのですが、そういう ものなのでしょうか。このとき、すでにxへの代入は起こっている ので、イテレータスコープにxが存在していて、これを見てくれる ものと思っていたのですが…。どう理解すべきか、御教示頂けると 幸いです。 x = nil ["a", "b"].each do |$_| x = $1 if /(a)/ print x, "\n" end -- 川村 尚生