From: jsoe0708@... Date: 2003-01-06T22:11:25+09:00 Subject: GetoptLong problem --=========3E0085D000001EE1/mail.tiscali.be Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, Learning ruby on my debian with ruby 1.6.8, I try the following test prog= ram: #!/usr/bin/env ruby require 'getoptlong' opts =3D GetoptLong.new( [ "--size", "-s", GetoptLong::REQUIRED_ARGUMENT ], [ "--verbose", "-v", GetoptLong::NO_ARGUMENT ], [ "--term", "-t", GetoptLong::NO_ARGUMENT ], [ "--query", "-q", GetoptLong::NO_ARGUMENT ], [ "--check", "--valid", "-c", GetoptLong::NO_ARGUMENT ] ) puts opts opts.each do |opt, arg| puts "Option: #{opt}, arg #{arg.inspect}" opts.terminate if (opt =3D=3D '--term') end puts "Remaining args: #{ARGV.join(', ')}" Well it works fine if I used options foreseen by programmer. But it faill= ed as soon as used another (faulty) option: for exanple ruby opt-tst.rb --imho I am awaiting: 'Remaining args: --imho' OTC getoptlong.rb failed with following message: opt1.rb: unrecognized option `--imho' /usr/lib/ruby/1.6/getoptlong.rb:230:in `set_error': unrecognized option `--imho' (GetoptLong::InvalidOption) from /usr/lib/ruby/1.6/getoptlong.rb:321:in `get' from /usr/lib/ruby/1.6/getoptlong.rb:409:in `each' from /usr/lib/ruby/1.6/getoptlong.rb:409:in `loop' from /usr/lib/ruby/1.6/getoptlong.rb:409:in `each' from opt1.rb:14 # Do you thing that is a bug solved in 1.7? Does it exist a work around (awaiting 1.7 available on my distro)? Thanks in advance for help, Joel PS: The joined SplitPatch.rb is the actual script on which I encounter fi= rst the problem. ******************************************** Promo Tiscali ADSL: 35 Euros/mois, 1er mois et activation =3D 0 Euro http= ://adsl.tiscali.be --=========3E0085D000001EE1/mail.tiscali.be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="SplitPatch.rb" IyEvdXNyL2Jpbi9lbnYgcnVieSAKCnJlcXVpcmUgJ2dldG9wdGxvbmcnCgpPUFRJT05TID0gWwog ICAgeyAnYXJnJyA9PiBbICctLXN0cmlwJywgJy1wJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJH VU1FTlQgXSwKICAgICAgJ2hlbHAnID0+CiAgICAgICAgIi0tc3RyaXA9PG51bT5cbiIgKwogICAg ICAgICItcCA8bnVtPlxuIiArCiAgICAgICAgIlx0U3RyaXAgIHRoZSAgc21hbGxlc3QgcHJlZml4 IGNvbnRhaW5pbmcgbnVtIGxlYWRpbmcgc2xhc2hlcy5cbiIgKwogICAgICAgICJcdChhcyBmb3Ig cGF0Y2ggbnVtIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQpIiB9LAogICAgeyAnYXJnJyA9PgogICAg ICAgIFsgJy0tb3V0cHV0LWRpcmVjdG9yeScsICctLW91dHB1dC1kaXInLCAnLS1vZGlyJywgJy1P JywKICAgICAgICAgICBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVCBdLAogICAgICAnaGVs cCcgPT4KICAgICAgICAiLS1vdXRwdXQtZGlyZWN0b3J5PTxkaXI+XG4iICsKICAgICAgICAiLS1v dXRwdXQtZGlyPTxkaXI+XG4iICsKICAgICAgICAiLS1vZGlyPTxkaXI+XG4iICsKICAgICAgICAi LU8gPGRpcj5cbiIgKwogICAgICAgICJcdFBsYWNlIG91dHB1dCBmaWxlcyBpbiBkaXJlY3Rvcnkg PGRpcj4iIH0sCiAgICB7ICdhcmcnID0+IFsgJy0taGVscCcsICctaCcsIEdldG9wdExvbmc6Ok5P X0FSR1VNRU5UIF0sCiAgICAgICdoZWxwJyA9PgogICAgICAgICItLWhlbHBcbiIgKwogICAgICAg ICItaFxuIiArCiAgICAgICAgIlx0RGlzcGxheSB0aGlzIG1lc3NhZ2UuIiB9LApdCgpkZWYgdXNh Z2Uob3V0ZikKICAgIGhlbHAgPSBPUFRJT05TLm1hcCB7IHxvcHR8IG9wdFsnaGVscCddIH0KICAg IG91dGYucHV0cyAiVXNhZ2U6ICN7JDB9IFtvcHRpb25zXSA8aW5wdXQgZmlsZTogYV9kaWZmX2Zp bGUgb3IgYV9wYXRjaF9maWxlPiIKICAgIG91dGYucHV0cwogICAgb3V0Zi5wdXRzICJBdmFpbGFi bGUgb3B0aW9uczoiCiAgICBoZWxwLmVhY2ggeyB8aGVscHwKICAgICAgICBvdXRmLnB1dHMKICAg ICAgICBvdXRmLnB1dHMgaGVscC5nc3ViKC9eLywgIlx0IikKICAgIH0KICAgIGV4aXQgMQplbmQK CmRlZiBwYXJzZV9vcHRpb25zCiAgICBiZWdpbgogICAgICAgIG9wdHMgPSBHZXRvcHRMb25nOjpu ZXcKICAgICAgICBvcHRzLm9yZGVyaW5nID0gR2V0b3B0TG9uZzo6UkVRVUlSRV9PUkRFUgogICAg ICAgIG9wdHMuc2V0X29wdGlvbnMoKihPUFRJT05TLm1hcCB7IHxvcHR8IG9wdFsnYXJnJ10gfSkp CgogICAgICAgIG9wdHMuZWFjaCB7IHB1dHMgfQogICAgICAgIG9wdHMuZWFjaCB7IHxvcHQsIGFy Z3wKICAgICAgICAgICAgY2FzZSBvcHQKICAgICAgICAgICAgICAgIHdoZW4gJy0tc3RyaXAnCgkJ ICAgICRTdHJpcCA9IGFyZy50b19pCiAgICAgICAgICAgICAgICB3aGVuICctLW91dHB1dC1kaXJl Y3RvcnknCiAgICAgICAgICAgICAgICAgICAgaWYgJFBhdGNoV0RpcgogICAgICAgICAgICAgICAg ICAgICAgICByYWlzZShBcmd1bWVudEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg Ik91dHB1dCBkaXJlY3RvcnkgYWxyZWFkeSBzcGVjaWZpZWQuIikKICAgICAgICAgICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXRjaFdEaXIgPSBhcmcKICAgICAgICAg ICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIHdoZW4gJy0taGVscCcKICAgICAgICAgICAg ICAgICAgICB1c2FnZShTVERPVVQpCiAgICAgICAgICAgICAgICAgICAgZXhpdCgwKQogICAgICAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJhaXNlKEFyZ3VtZW50RXJyb3IsICJV bmtub3duIG9wdGlvbiAje29wdH0iKQogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgfQogICAg ICAgIGlmIEFSR1Yuc2l6ZSA9PSAwCiAgICAgICAgICAgICAgICByYWlzZShBcmd1bWVudEVycm9y LCAiTWlzc2luZyBpbnB1dCBmaWxlLiIpCiAgICAgICAgZWxzaWYgQVJHVi5zaXplID4gMQogICAg ICAgICAgICAgICAgcmFpc2UoQXJndW1lbnRFcnJvciwgIlRvbyBtYW55IGFyZ3VtZW50cy4iKQog ICAgICAgIGVuZAoKICAgICAgICAkUGF0Y2hUcmVlID0gQVJHVlswXQogICAgICAgIAoJIyBEZWZh dWx0cwogICAgICAgIHVubGVzcyAkUGF0Y2hXRGlyCiAgICAgICAgICAgIF9QYXRjaEZpbGU9ICRQ YXRjaFRyZWUuc3BsaXQoL1wvLykuYXQoLTEpCiAgICAgICAgICAgICRQYXRjaFdEaXIgPSAiLi8i K19QYXRjaEZpbGUrIi1QYXRjaEZpbGVzIgoJZW5kCgkkU3RyaXAgPSAwIHVubGVzcyAkU3RyaXAK CiAgICByZXNjdWUgQXJndW1lbnRFcnJvcgoJU1RERVJSLnB1dHMgJCEubWVzc2FnZQoJdXNhZ2Uo U1RERVJSKQoJZXhpdCAxCiAgICBlbmQKZW5kCgpkZWYgb3BlblBhdGNoRmlsZShfRmlsZU5hbWUp CiAgICBiZWdpbiAKICAgICAgICAkUGF0Y2hGaWxlID0gb3BlbiggIiN7X0ZpbGVOYW1lfSIgLCAi ciIgKQogICAgcmVzY3VlCiAgICAgICAgcHV0cyAiRmlsZSAje19GaWxlTmFtZX0gZG9lcyBub3Qg ZXhpc3RzLiIKICAgICAgICB1c2FnZShTVERFUlIpCglleGl0KDEpCiAgICBlbmQKZW5kCgpkZWYg YnVpbGRXRGlyKF9BcmcpCiAgICByYz1zeXN0ZW0oIm1rZGlyIC1wICN7X0FyZ30iKQogICAgaWYg bm90IHJjCiAgICAgICAgcHV0cyAiRGlyZWN0b3J5ICN7X0FyZ30gY291bGQgbm90IGJlIGNyZWF0 ZWQuIgogICAgICAgIGV4aXQgMQogICAgZWxzZQoJcHV0cyAiVGhlIGlzb2xhdGVkIHBhdGNoIGZp bGVzIHdpbGwgc3RhbmQgaW46ICcje19Bcmd9Jy4iCiAgICBlbmQKZW5kCgpkZWYgbWFpbgogICAg cHV0cyAiSGVyZSBpcyB0aGUgbWFpbiBvZiAjeyQwfSBwcm9ncmFtIgogICAgcGFyc2Vfb3B0aW9u cwogICAgZXhpdCAwCiAgICBidWlsZFdEaXIoJFBhdGNoV0RpcikKICAgICRQYXRjaEZpbGUgPSBv cGVuUGF0Y2hGaWxlKCRQYXRjaFRyZWUpCgogICAgX0NvbW1lbnRzRmlsZU5hbWUgPSAkUGF0Y2hX RGlyKyIvQ29tbWVudHMiCiAgICBfQ29tbWVudHNGaWxlID0gRmlsZS5vcGVuKF9Db21tZW50c0Zp bGVOYW1lLCAndycpCiAgICBfRGlmZkxpbmU9bmlsCiAgICBfUGF0ZXJuU3JjPW5pbAog ICAgX1BhdGVybkRlc3Q9bmlsCiAgICBfRGVzdFBhdGNoRmlsZT1uaWwKICAgIGJlZ2luCiAgICAg ICAgX0lucHV0TGluZT0kUGF0Y2hGaWxlLmdldHMKCQoJY2FzZSBfSW5wdXRMaW5lCgkgICAgd2hl biAgL14jLwoJICAgICAgICAjIEJ5cGFzcyBoZWFkaW5nIGNvbW1lbnRzCgkgICAgICAgIF9Db21t ZW50c0ZpbGUucHV0cyhfSW5wdXRMaW5lKQoJICAgIHdoZW4gL15kaWZmLwoJICAgICAgICBfRGlm ZkxpbmU9X0lucHV0TGluZQoJICAgIHdoZW4gL14tLS0vCgkgICAgICAgIF9QYXRlcm5TcmM9X0lu cHV0TGluZQoJICAgIHdoZW4gL15cK1wrXCsvCgkgICAgICAgIF9QYXRlcm5EZXN0PV9JbnB1dExp bmUKCQlfRGVzdFRyZWVGaWxlPV9QYXRlcm5EZXN0LnNwbGl0KCkuYXQoMSkKCQkjIFN0cmlwIHBu dW0gJy8nCgkJaT0wCgkJd2hpbGUgaTwkU3RyaXAKCQkgICAgdW5sZXNzIChfSW5kZXggPSBfRGVz dFRyZWVGaWxlLmluZGV4KCcvJykpID09IG5pbAoJCSAgICAgICAgX0Rlc3RUcmVlRmlsZSA9IF9E ZXN0VHJlZUZpbGVbIF9JbmRleCsxIC4uIC0xIF0KCQkgICAgZW5kCgkJICAgIGkrPTEKCQllbmQK CQlfRGVzdFBhdGNoRmlsZU5hbWU9IiN7JFBhdGNoV0Rpcn0vIitfRGVzdFRyZWVGaWxlLmdzdWIo L1wvLywgJ18nKSsiLnBhdGNoIgoJICAgICAgICBfRGVzdFBhdGNoRmlsZSA9IEZpbGUub3Blbigg IiN7X0Rlc3RQYXRjaEZpbGVOYW1lfSIgLCAidyIgKQoJCXVubGVzcyBfRGlmZkxpbmUgPT0gbmls CgkJICAgIF9EZXN0UGF0Y2hGaWxlLnB1dHMoIF9EaWZmTGluZSApCgkJICAgIF9EaWZmTGluZSA9 PSBuaWwKCQllbmQKCQlfRGVzdFBhdGNoRmlsZS5wdXRzKCBfUGF0ZXJuU3JjICkKCQlfUGF0ZXJu U3JjPW5pbAoJCV9EZXN0UGF0Y2hGaWxlLnB1dHMoIF9QYXRlcm5EZXN0ICkKCQlfUGF0ZXJuRGVz dD1uaWwKCgkgICAgZWxzZQoJCWlmIF9EZXN0UGF0Y2hGaWxlCgkgICAgICAgICAgICBfRGVzdFBh dGNoRmlsZS5wdXRzKCBfSW5wdXRMaW5lICkKCQllbHNlCgkgICAgICAgICAgICBfQ29tbWVudHNG aWxlLnB1dHMoX0lucHV0TGluZSkKCQllbmQKICAgICAgICBlbmQKCiAgICBlbmQgdW50aWwgJFBh dGNoRmlsZS5lb2YKICAgICMgQ2xlYW51cAogICAgX0NvbW1lbnRzRmlsZS5jbG9zZQogICAgJFBh dGNoRmlsZS5jbG9zZQplbmQKCm1haW4K --=========3E0085D000001EE1/mail.tiscali.be--