From: 7stud -- Date: 2008-02-20T11:57:09+09:00 Subject: optparse: parse v. parse! ?? Here's a simple example that looks for two options--one with a required value and one with an optional value: require 'optparse' opts = OptionParser.new do |opts| puts 'hello' #option where value is required: opts.on("-t=RANDOM_CHARS") do |val| puts 'in first on()' puts "-t option entered with value=#{val}" end #option where value is optional: opts.on("-y [=RANDOM_CHARS]") do |val| puts "-y option entered with value=#{val}" end end opts.parse! p ARGV --output:-- $ruby optparseEx2.rb -t hi -y hello in first on() -t option entered with value=hi -y option entered with value= [] However, when I change the line: opts.parse! to: opts.parse I get this output: $ruby optparseEx2.rb -t hi -y hello ["-t", "hi", "-y"] which indicates that none of the on() handlers executed. My reading of parse() is that it's the same as parse!() except that parse() doesn't remove the option/values from ARGV. -- Posted via http://www.ruby-forum.com/.