From: Minero Aoki Date: 2000-03-27T17:15:38+09:00 Subject: [ruby-dev:9513] Re: getopts.rb あおきです。 In mail "[ruby-dev:9502] getopts.rb" Wakou Aoyama wrote: > 青山です。 > > 1.5 の getopts.rb ですが、たぶん、こうですよね。 > boolopts.each do |opt, val| > - eval "$OPT_#{opt} = val" > + eval "$OPT_#{opt} = #{val}" > end > valopts.each do |opt, val| > - eval "$OPT_#{opt} = #{val == 0 ? 'nil' : 'val'}" > + eval "$OPT_#{opt} = #{val == 0 ? 'nil' : val}" > end > argv.replace newargv え、ブロック引数って eval では参照できないんでしたっけ? ぼくの環境では $ ruby -ve '[1].each {|i| eval "$i = i" }; puts $i' ruby 1.5.3 (2000-03-23) [i686-linux-libc1] 1 と動いているようです。 それにこの修正だと、後のほうでは文字列展開後が (val = 'test.rb' の状態で…) $OPT_o = test.rb # <- ここがまずい とかになってしまうのでまずいです。 ------------------------------------------------------------------- あおきみねろう