EDIT: Please, please, please read the two requirements listed at the bottom of this post before replying. People keep posting their new gems and li
This is very similar to the accepted answer, but using ARGV.delete_if which is what I use in my simple parser. The only real difference is that options with arguments must be together (e.g. -l=file).
def usage
"usage: #{File.basename($0)}: [-l=] [-q] file ..."
end
$quiet = false
$logfile = nil
ARGV.delete_if do |cur|
next false if cur[0] != '-'
case cur
when '-q'
$quiet = true
when /^-l=(.+)$/
$logfile = $1
else
$stderr.puts "Unknown option: #{cur}"
$stderr.puts usage
exit 1
end
end
puts "quiet: #{$quiet} logfile: #{$logfile.inspect} args: #{ARGV.inspect}"