The non-flag command line arguments are left in ARGV after
OptionParser runs. So you would do something like

if options[:p] == 'B' or options[:p] == 'C'
  if ARGV.length != 0
    raise 'unexpected argument'
  else
    do_stuff ARGV[0]
  end
end

-- Matma Rex