From: ara.t.howard@... Date: 2006-03-08T00:04:56+09:00 Subject: Re: getoptlong question On Tue, 7 Mar 2006, Matt Rose wrote: > > This has been bugging me for weeks now, intermittently. > > By all accounts I've read, this getoptlong code should work > > require 'getoptlong' > > opts = GetoptLong.new( > ["--devel","-d",GetoptLong::NO_ARGUMENT], > ["--getpass","-g",GetoptLong::NO_ARGUMENT], > ["--debug","-D",GetoptLong::NO_ARGUMENT], > ["--verbose","-V",GetoptLong::NO_ARGUMENT] > ) > > server = 'http://192.168.10.16/' > verbose = false > opts.each { |o,a| p o } > opts.each { |o,a| > case o > when '--devel' > server = 'http://192.168.20.56/' > when '--getpass' > puts "this option does nothing" > when '--debug': $DEBUG = true > when '--verbose': verbose = true > end > } > p server > p $DEBUG > p verbose > > This is the output I expect when I run it: > > "--devel" > "--debug" > "--verbose" > "http://192.168.20.56/" > true > true > > This is the output I get: > > "--devel" > "--debug" > "--verbose" > "http://192.168.10.16/" > false > false > > What am I missing? harp:~ > diff -ubB a.rb.org a.rb --- a.rb.org 2006-03-07 07:56:07.000000000 -0700 +++ a.rb 2006-03-07 07:58:12.000000000 -0700 @@ -9,7 +9,7 @@ server = 'http://192.168.10.16/' verbose = false -opts.each { |o,a| p o } +#opts.each { |o,a| p o } opts.each { |o,a| case o when '--devel' harp:~ > ruby -- a.rb --debug --devel --verbose "http://192.168.20.56/" true true each is destructive - as most argv parsers are. hth. -a -- judge your success by what you had to give up in order to get it. - h.h. the 14th dali lama cat a.rb