./hoge source -o outputsourceにオプションスイッチが無いのがミソ。
options = { :input => $stdin, :output => $stdout } optp = OptionParser.new optp.on("-o outputfile", String) {|out_filename| options[:output] = File.open(out_filename, 'w') } remain_opts = optp.permute(ARGV) if (remain_opts.size > 1) raise "Invalid input count." elsif (remain_opts.size == 1) options[:input] = File.open(remain_opts[0], 'r') endOptionParser#parseでなくて、OptionParser#permuteを使う。