Ruby,Perl,Pythonのメモ〜コマンドオプション取得方法〜
メモ:
・日本語の取り扱いのめも その2(引数・コマンドオプションについて)
・バージョンはruby 1.9.1p129,perl v5.10.0,Python 3.0.1
ruby | perl | python | |
---|---|---|---|
ライブラリ | OptionParser | Getopt::Long英語 Getopt::Long日本語 |
optparse英語 optparse日本語 |
文字コード | localeのまま取得? (でもwarning出る) |
内部で変換 | locale→Unicode文字列に自動変換? |
※rubyのwarning回避方法は今のところ不明。わかれば追記する。
#!/usr/local/bin/ruby # coding: utf-8 require 'optparse' opts = {} ARGV.options {|opt| opt.on('-n name','--name','オプションの説明') {|name| opts[:name] = name } opt.parse! } if opts[:name] then puts "name=#{opts[:name]} name.encoding=#{opts[:name].encoding}" end # オプション以外の引数 puts "引数の数 = #{ARGV.length}" puts "引数 = #{ARGV}"
結果
$ ./jpSrc.rb 日本語 -n 日本語 /usr/local/lib/ruby/1.9.1/optparse.rb:1262: warning: regexp match /.../n against to UTF-8 string /usr/local/lib/ruby/1.9.1/optparse.rb:1278: warning: regexp match /.../n against to UTF-8 string /usr/local/lib/ruby/1.9.1/optparse.rb:326: warning: regexp match /.../n against to UTF-8 string name=日本語 name.encoding=UTF-8 引数の数 = 1 引数 = ["日本語"]
$ ./jpSrc.rb -h Usage: jpSrc [options] -n, --name name オプションの説明
#!/usr/bin/perl use strict; use warnings; use utf8; use feature ":5.10"; use Getopt::Long; use Encode; my %opts = (); GetOptions(\%opts, 'help', 'name=s'); binmode(STDOUT, ':utf8' ); if( $opts{help} ){ say "Usage: $0 [options]"; say " -n, --name name オプションの説明"; exit 0; } if( $opts{name} ){ my $utf_name = Encode::decode('utf8',$opts{name}); say "name = $utf_name"; } # オプション以外の引数 say "引数の数 = ".@ARGV; my @encode_argv = map { Encode::decode('utf8',$_) } @ARGV; say "引数 = @encode_argv";
結果
$ ./jpSrc.pl 日本語 -n 日本語 name = 日本語 引数の数 = 1 引数 = 日本語
$ ./jpSrc.pl -h Usage: ./jpSrc.pl [options] -n, --name name オプションの説明
#!/usr/local/bin/python3.0 # /usr/bin/python3.0 # -*- coding: utf-8 -*- from optparse import OptionParser parser = OptionParser() parser.add_option("-n", "--name", dest="name", help="オプションの説明", metavar="string") (options, args) = parser.parse_args() print("options=" ,options) # オプション以外の引数 print("引数の数 =" , len(args)) print("引数 =" , args)
結果
$ ./jpSrc.py 日本語 -n 日本語 options= {'name': '日本語'} 引数の数 = 1 引数 = ['日本語']
$ ./jpSrc.py -h Usage: jpSrc.py [options] Options: -h, --help show this help message and exit -n string, --name=string オプションの説明