Issue #13858 has been reported by iefoaix (Michael Wang). ---------------------------------------- Bug #13858: getoptlong cannot process multiple line argument with equal sign (=) version https://bugs.ruby-lang.org/issues/13858 * Author: iefoaix (Michael Wang) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Here is the test case: # more getopt.rb require 'getoptlong' a=GetoptLong.new( [ '--user', '-u', GetoptLong::REQUIRED_ARGUMENT ], [ '--statement', '-s', GetoptLong::REQUIRED_ARGUMENT ], ) a.each { |x, y| p x p y } Here is the problem: # ruby getopt.rb --user me --statement=" > select now() from dual > " "--user" "me" "--statement" "" Please note the statement is empty while it is not. On contrary, without "=" sign it works fine: # ruby getopt.rb --user me --statement " select now() from dual " "--user" "me" "--statement" "\nselect now() from dual\n" It is believed this bug is due to the regex that `GetoptLong` uses to parse the argument for long opts. Please investigate and fix, thanks! -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>