From: gga Date: 2007-03-22T01:10:08+09:00 Subject: Re: Issue with Getopt-declare incorrect parameter specification On 21 mar, 07:41, "Nexos" wrote: > On 21 mar, 08:30, "gga" wrote: > > > > > > > > > It seems to work for me with latest 1.22, albeit you should use > > $pattern or @pattern. Otherwise pattern is a local variable to the > > block. > > > require 'rubygems' > > require 'Getopt/Declare' > > > @pattern = ".*" > > args = Getopt::Declare.new(%q% > > -p some regexp; defaults to ".*" (explanation) > > { > > @pattern = regexp > > } > > %) > > > puts "VERSION #{Getopt::Declare::VERSION}" > > p args > > puts "PATTERN #@pattern" > > > > try.rb -p hello > > > VERSION 1.22 > > -p => "hello" > > Unused: > > PATTERN .* > > Thanks for the issue on the variable scope, but the error message > appears when you use a more complex argument value than 'hello', > i.e. > > try.rb -p hello works fine > > but > > try.rb -p '[a-c].*' gives the error message Oh, yes. This is a bug I recently stumbled upon and has been fixed. The problem is in Getopt/Declare.rb, around line 668. There's a: code << '\b' Just comment that out. I'll be making a new release with that fix soon, but I am also adding a more complex Test::Unit test suite to catch those sort of errors.