=head1 NAME 名前 Getopt::Long - Extended processing of command line options Getopt::Long - 高機能なコマンドラインオプション解析 =head1 SYNOPSIS 概要 use Getopt::Long; my $data = "file.dat"; my $length = 24; my $verbose; $result = GetOptions ("length=i" => \$length, # numeric "file=s" => \$data, # string "verbose" => \$verbose); # flag =head1 DESCRIPTION 説明 The Getopt::Long module implements an extended getopt function called GetOptions(). This function adheres to the POSIX syntax for command line options, with GNU extensions. In general, this means that options have long names instead of single letters, and are introduced with a double dash "--". Support for bundling of command line options, as was the case with the more traditional single-letter approach, is provided but not enabled by default. Getopt::Long モジュールは 洗練された getopt 関数, GetOptions() を 実装しています. この関数は GNU 拡張を共存しつつ POSIX 形式のコマンド ラインオプションの理念を引き継いでいます. 一般的にこのことは, オプションは一文字ではなく長い名前を持ち, 2つのダッシュ "--" で 始まります. 伝統的な一文字でのアプローチでよく見られるコマンドライン オプションを1つに束ねる使い方も, サポートはされていますがデフォルトでは 有効にされていません. =head1 Command Line Options, an Introduction コマンドラインオプション, 導入 Command line operated programs traditionally take their arguments from the command line, for example filenames or other information that the program needs to know. Besides arguments, these programs often take command line I as well. Options are not necessary for the program to work, hence the name 'option', but are used to modify its default behaviour. For example, a program could do its job quietly, but with a suitable option it could provide verbose information about what it did. コマンドラインで操作するプログラムは伝統的にその引数をコマンドライン から受け取ります. 例えばプログラムが知る必要のあるファイル名や その他の情報等です. 引数に加えて, これらのプログラムはしばしば おまけにコマンドラインI<オプション>を受け取ります. オプションは プログラムの動作に必ずしも必要ではありません, 従って'オプション' という名前なのですが, しかしそのデフォルトの振る舞いを変更するために 使用されます. 例えばあるプログラムはそのジョブを静かに行いますが, 適切なオプションを渡すことでそれが何をしているかに関して事細かに 情報を提供したりするでしょう. Command line options come in several flavours. Historically, they are preceded by a single dash C<->, and consist of a single letter. コマンドラインオプションには幾つかの種類があります. 伝統的に, これらは1つのダッシュで始まり1つの文字からなります. -l -a -c Usually, these single-character options can be bundled: 大抵は, これらの1文字のオプションはまとめることが出来ます: -lac Options can have values, the value is placed after the option character. Sometimes with whitespace in between, sometimes not: オプションはあたりを持つこともあります. オプションはオプション文字 の後に配置されます. その間に空白が置かれることもありますが, 置かれないこともあります: -s 24 -s24 Due to the very cryptic nature of these options, another style was developed that used long names. So instead of a cryptic C<-l> one could use the more descriptive C<--long>. To distinguish between a bundle of single-character options and a long one, two dashes are used to precede the option name. Early implementations of long options used a plus C<+> instead. Also, option values could be specified either like これらのオプションはとても不可解な性質だったため, 長い名前を使用する 別の形式が開発されました. 不可解な C<-l> の代わりにより説明的な C<--long> を使うことが出来るようになりました. 束になった1文字 オプションと長い名前のオプションとを区別するために, オプション名には 2つのダッシュが使われました. 長い名前のオプションの初期の実装では プラス記号 C<+> が使われることもありました. またオプションの値は 次の2つの書き方があります: --size=24 or 若しくは --size 24 The C<+> form is now obsolete and strongly deprecated. C<+> 形式は今では廃止され, 使わないことが強く推奨されています. =head1 Getting Started with Getopt::Long Getopt::Long 事始め Getopt::Long is the Perl5 successor of C. This was the first Perl module that provided support for handling the new style of command line options, hence the name Getopt::Long. This module also supports single-character options and bundling. Single character options may be any alphabetic character, a question mark, and a dash. Long options may consist of a series of letters, digits, and dashes. Although this is currently not enforced by Getopt::Long, multiple consecutive dashes are not allowed, and the option name must not end with a dash. Getopt::Long は C の Perl5 後継です. これは新しい 形式のコマンドラインオプションをサポートする最初の Perl モジュール でした. それ故 Getopt::Long の名前です. このモジュールは1文字の オプションとその合成もサポートしています. 1文字のオプションは 任意のアルファベット文字, 疑問符, そしてダッシュのいずれかでしょう. 長いオプションは文字、数字、そしてダッシュからなります. これは今のところ Getopt::Long では強制されていませんが, 連続する 複数のダッシュは許可されていません. そしてオプション名はダッシュで 終わってはなりません. To use Getopt::Long from a Perl program, you must include the following line in your Perl program: Getopt::Long を Perl プログラムから使うときには, 次の行を Perl プログラムに記述します. use Getopt::Long; This will load the core of the Getopt::Long module and prepare your program for using it. Most of the actual Getopt::Long code is not loaded until you really call one of its functions. これは Getopt::Long モジュールのコアをロードし, プログラムが それを使う準備をします. Getopt::Long の実際のコードの多くは そこで準備された関数のいずれかを実際に呼び出すまではロード されません. In the default configuration, options names may be abbreviated to uniqueness, case does not matter, and a single dash is sufficient, even for long option names. Also, options may be placed between non-option arguments. See L for more details on how to configure Getopt::Long. デフォルトの設定では, オプション名はユニークな限りで省略可能で, 大文字小文字を区別せず, 長い名前のオプションであっても1つのダッシュで 利用できます. そして, オプションはオプションでない引数の間に 配置することも出来ます. Getopt::Long を設定する方法の詳細は, L<|/Getopt::Long の設定> を参照してください. =head2 Simple options 簡単なオプション The most simple options are the ones that take no values. Their mere presence on the command line enables the option. Popular examples are: 一番簡単なオプションは値を撮らないオプションでしょう. それはコマンドラインに存在するだけでオプションを有効にします. よく使われる例です: --all --verbose --quiet --debug Handling simple options is straightforward: 単純なオプションは処理するのも簡単です: my $verbose = ''; # option variable with default value (false) my $all = ''; # option variable with default value (false) GetOptions ('verbose' => \$verbose, 'all' => \$all); The call to GetOptions() parses the command line arguments that are present in C<@ARGV> and sets the option variable to the value C<1> if the option did occur on the command line. Otherwise, the option variable is not touched. Setting the option value to true is often called I the option. GetOptions() の呼び出しは C<@ARGV> で提供されるコマンドライン引数 を解析し, オプションがコマンドラインにあればオプション変数に値 C<1> を 設定します. そうでなければオプション変数にはふれられません. オプション値を真に設定することをしばしばオプションをI<有効にする>と 呼びます. The option name as specified to the GetOptions() function is called the option I. Later we'll see that this specification can contain more than just the option name. The reference to the variable is called the option I. GetOptions() 関数に指示したオプション名はオプションI<指定(specification)> と呼ばれます. 後ほどこの指定が単なるオプション名以上の意味があることを 知るでしょう. 変数へのリファレンスはオプションI<格納先(destination)>と 呼びます. GetOptions() will return a true value if the command line could be processed successfully. Otherwise, it will write error messages to STDERR, and return a false result. GetOptions() はコマンドラインを正常に処理したときに真を返します. そうでなければ STDERR にエラーメッセージを書き出して偽を返します. =head2 A little bit less simple options 幾分簡単じゃなくなったオプション Getopt::Long supports two useful variants of simple options: I options and I options. Getopt::Long は簡単なオプションの2つの変種をサポートしています: I<反転> オプションと I<増分(incremental)> オプションです. A negatable option is specified with an exclamation mark C after the option name: 反転オプションはオプション名の後に 感嘆符 C をつけることで指定します. my $verbose = ''; # option variable with default value (false) GetOptions ('verbose!' => \$verbose); Now, using C<--verbose> on the command line will enable C<$verbose>, as expected. But it is also allowed to use C<--noverbose>, which will disable C<$verbose> by setting its value to C<0>. Using a suitable default value, the program can find out whether C<$verbose> is false by default, or disabled by using C<--noverbose>. さて, コマンドラインでの C<--verbose> は C<$verbose> を有効にします. しかし C<--noverbose> を使うことでその値を C<0> に設定し C<$verbose> を無効にすることも出来ます. 適切なデフォルト値を使うことでプログラムは C<$verbose> がデフォルトで偽なのか, それとも C<--noverbose> を 使うことで無効にするのかを選ぶことが出来ます. An incremental option is specified with a plus C<+> after the option name: 増分オプションはオプション名の後にプラス記号 C<+> をつけることで 指定します: my $verbose = ''; # option variable with default value (false) GetOptions ('verbose+' => \$verbose); Using C<--verbose> on the command line will increment the value of C<$verbose>. This way the program can keep track of how many times the option occurred on the command line. For example, each occurrence of C<--verbose> could increase the verbosity level of the program. コマンドラインで C<--verbose> を使うと C<$verbose> の値が増加 されます. これによってプログラムはコマンドラインにオプションが 何回指定されたかを追跡することが出来ます. 例えば C<--verbose> が 出現する毎にプログラムのログの詳細レベルを増加させることが出来ます. =head2 Mixing command line option with other arguments コマンドラインオプションと他の引数の混在 Usually programs take command line options as well as other arguments, for example, file names. It is good practice to always specify the options first, and the other arguments last. Getopt::Long will, however, allow the options and arguments to be mixed and 'filter out' all the options before passing the rest of the arguments to the program. To stop Getopt::Long from processing further arguments, insert a double dash C<--> on the command line: 通常プログラムは他の引数, 例えばファイル名と同じようにしてコマンド ラインオプションを受け取ります. 常に先にオプションを指定して それ以外の引数を最後に置くのはよい習慣です. Getopt::Long は, しかしながらオプションと引数とを混在させて引数の残りをプログラムに 渡す前に全てのオプションを'濾過'することを可能にしています. Getopt::Long が後ろの引数を処理してしまうのを止めるには, コマンドラインに2重のダッシュ C<--> を挟みます: --size 24 -- --all In this example, C<--all> will I be treated as an option, but passed to the program unharmed, in C<@ARGV>. この例では, C<--all> はオプションとしては扱われI<ません>. そして C<@ARGV> の中で無傷のままプログラムに渡されます. =head2 Options with values 値を取るオプション For options that take values it must be specified whether the option value is required or not, and what kind of value the option expects. オプションが値を受け取るにはそのオプションの値が必須であるかそうで ないのか, そしてどんな種類の値を想定しているのかを指定しなければ なりません. Three kinds of values are supported: integer numbers, floating point numbers, and strings. 3種類の値がサポートされています: 整数値, 浮動小数点値, そして文字列. If the option value is required, Getopt::Long will take the command line argument that follows the option and assign this to the option variable. If, however, the option value is specified as optional, this will only be done if that value does not look like a valid command line option itself. オプション値を必要と指定のなら, Getopt::Long はオプションに続く コマンドライン引数をオプション変数に代入します. もし, しかしながら, オプション値が任意と指定されているのなら, 値がコマンドライン引数ぽく ないときにのみこれを行います. my $tag = ''; # option variable with default value GetOptions ('tag=s' => \$tag); In the option specification, the option name is followed by an equals sign C<=> and the letter C. The equals sign indicates that this option requires a value. The letter C indicates that this value is an arbitrary string. Other possible value types are C for integer values, and C for floating point values. Using a colon C<:> instead of the equals sign indicates that the option value is optional. In this case, if no suitable value is supplied, string valued options get an empty string C<''> assigned, while numeric options are set to C<0>. オプション指定において, オプション名の後に等号 C<=> と文字 C を 続けます. 等号はこのオプションが値を要求していることを示します. 文字 C はこの値が任意の文字列であることを示します. 他には 整数値には C を, 浮動小数点値には C を指定できます. 等号の代わりにコロン C<:> を使うことでオプション値が任意にもできます. このとき適切な値が指定されなかったときには文字列値オプションには 空文字列 C<''> が, 数値オプションには C<0> が設定されます. =head2 Options with multiple values 複数の値を取るオプション Options sometimes take several values. For example, a program could use multiple directories to search for library files: オプションは幾つかの値を受け取ることもあります. 例えば, プログラムは ライブラリファイルを探すために複数のディレクトリを使うかもしれません: --library lib/stdlib --library lib/extlib To accomplish this behaviour, simply specify an array reference as the destination for the option: この振る舞いを達成するにはオプションの格納先に配列へのリファレンスを 指定するだけです: GetOptions ("library=s" => \@libfiles); Alternatively, you can specify that the option can have multiple values by adding a "@", and pass a scalar reference as the destination: それ以外でも, (型の指定の後に) "@" を追加することでオプションは 複数の値を取ることを指定でき, スカラーへのリファレンスを格納先に 渡すことが出来ます. GetOptions ("library=s@" => \$libfiles); Used with the example above, C<@libfiles> (or C<@$libfiles>) would contain two strings upon completion: C<"lib/srdlib"> and C<"lib/extlib">, in that order. It is also possible to specify that only integer or floating point numbers are acceptable values. この例においては, C<@libfiles> (もしくは C<@$libfiles>) には 二つの完全な文字列: C<"lib/srdlib"> 及び C<"lib/extlib"> が この順番で格納されます. 整数値のみ若しくは浮動小数点値のみが 許容される値であると指定することも出来ます. Often it is useful to allow comma-separated lists of values as well as multiple occurrences of the options. This is easy using Perl's split() and join() operators: オプションを複数回描くのと同様にコンマで区切った値のリストを 許可すると便利なこともあります. これは Perl の split() 及び join() を使うことで簡単に行えます. GetOptions ("library=s" => \@libfiles); @libfiles = split(/,/,join(',',@libfiles)); Of course, it is important to choose the right separator string for each purpose. もちろん, 目的に合わせた適切な区切り文字を選ぶことが重要です. Warning: What follows is an experimental feature. 警告: 以下の記述は実験的な機能(experimental feature)です. Options can take multiple values at once, for example オプションは一度に複数の値を取ることも出来ます, 例えば: --coordinates 52.2 16.4 --rgbcolor 255 255 149 This can be accomplished by adding a repeat specifier to the option specification. Repeat specifiers are very similar to the C<{...}> repeat specifiers that can be used with regular expression patterns. For example, the above command line would be handled as follows: これはオプション指定に繰り返し指定を加えることで行えます. 繰り返し指定は正規表現パターンで使う C<{...}> 繰り返し指定ととても よく似ています. 例えば先ほどのコマンドラインは次の指定で扱えます: GetOptions('coordinates=f{2}' => \@coor, 'rgbcolor=i{3}' => \@color); The destination for the option must be an array or array reference. オプションの格納先は配列もしくは配列へのリファレンスではければ なりません. It is also possible to specify the minimal and maximal number of arguments an option takes. C indicates an option that takes at least two and at most 4 arguments. C indicates one or more values; C indicates zero or more option values. オプションが受け取る最小と最大の個数を指定することも出来ます. C は少なくとも2つのそして最大4個の引数を受け取る オプションを示します. C は1つ以上の値を示し, C は 0個以上の値を示します. =head2 Options with hash values ハッシュ値を取るオプション If the option destination is a reference to a hash, the option will take, as value, strings of the form IC<=>I. The value will be stored with the specified key in the hash. もしオプションの格納先がハッシュへのリファレンスだったときには, オプションはその値として IC<=>I の形式の文字列を 受け取ります. この値はそのキーでハッシュに格納されます. GetOptions ("define=s" => \%defines); Alternatively you can use: 次の形式も可能です: GetOptions ("define=s%" => \$defines); When used with command line options: 次のコマンドラインオプションを受け取ったとします: --define os=linux --define vendor=redhat the hash C<%defines> (or C<%$defines>) will contain two keys, C<"os"> with value C<"linux> and C<"vendor"> with value C<"redhat">. It is also possible to specify that only integer or floating point numbers are acceptable values. The keys are always taken to be strings. ハッシュ C<%defines> (若しくは C<%$defines>) には2つのキーが格納され, C<"os"> には値 C<"linux"> が, C<"vendor"> には値 C<"redhat"> が格納されます. 整数値のみ若しくは浮動小数点値のみが許容される値であると指定することも 出来ます. キーには常に文字列が取られます. =head2 User-defined subroutines to handle options オプションを処理するユーザ定義関数 Ultimate control over what should be done when (actually: each time) an option is encountered on the command line can be achieved by designating a reference to a subroutine (or an anonymous subroutine) as the option destination. When GetOptions() encounters the option, it will call the subroutine with two or three arguments. The first argument is the name of the option. For a scalar or array destination, the second argument is the value to be stored. For a hash destination, the second arguments is the key to the hash, and the third argument the value to be stored. It is up to the subroutine to store the value, or do whatever it thinks is appropriate. オプション格納先として関数(若しくは無名関数)へのリファレンスを設置 することで, オプションがコマンドラインに出現したとき(実際に毎回)処理 されるべき事の完全な制御を行うことが出来ます. GetOptions() が オプションに遭遇したとき, その関数が2つ若しくは3つの引数で 呼び出されます. 最初の引数はオプション名です. 格納先がスカラー 若しくは配列の場合には2つめの引数は格納される値です. 格納先がハッシュの場合には2つめの引数はハッシュのキーで, 3つめの 引数は格納される値です. 値を格納するか, 適切な何かを行うかは 関数次第です. A trivial application of this mechanism is to implement options that are related to each other. For example: このメカニズムの簡単な例は相互に関連するオプションの実装です. 以下は例です: my $verbose = ''; # option variable with default value (false) GetOptions ('verbose' => \$verbose, 'quiet' => sub { $verbose = 0 }); Here C<--verbose> and C<--quiet> control the same variable C<$verbose>, but with opposite values. ここで C<--verbose> 及び C<--quiet> は同じ変数 C<$verbose> を 制御しますがその値は正反対の物です. If the subroutine needs to signal an error, it should call die() with the desired error message as its argument. GetOptions() will catch the die(), issue the error message, and record that an error result must be returned upon completion. もし関数がエラーを発生させる必要があるなら希望のエラーメッセージを引数 として die() を呼んでください. GetOptions() は die() をキャッチして, エラーメッセージを発行し, 終了時に返されるエラーとして記録します. If the text of the error message starts with an exclamation mark C it is interpreted specially by GetOptions(). There is currently one special command implemented: C will cause GetOptions() to stop processing options, as if it encountered a double dash C<-->. エラーメッセージのテキストが感嘆符Cで始まる時は GetOptions() によって 特別に処理されます. 現時点では1つの特殊コマンドが実装されています: C はあたかも2重のダッシュ C<--> に遭遇したかのように その場でオプションの処理を停止させます. =head2 Options with multiple names 複数の名前を持つオプション Often it is user friendly to supply alternate mnemonic names for options. For example C<--height> could be an alternate name for C<--length>. Alternate names can be included in the option specification, separated by vertical bar C<|> characters. To implement the above example: オプションに覚えやすい別名を提供することが親切なこともあります. 例えば C<--height> は C<--length> の別名を持つ等です. 別名は垂直線文字 C<|> で区切ってオプション指定の中に含めることが 出来ます. いまの例を記述すると次のようになります: GetOptions ('length|height=f' => \$length); The first name is called the I name, the other names are called I. When using a hash to store options, the key will always be the primary name. 1つめの名前はI<プライマリ>名と呼ばれ, それ以外はI<別名> と呼ばれます. ハッシュにオプションを格納するときには常にプライマリ名が使われます. Multiple alternate names are possible. 複数の別名を指定することも出来ます. =head2 Case and abbreviations 大文字小文字と略語 Without additional configuration, GetOptions() will ignore the case of option names, and allow the options to be abbreviated to uniqueness. 追加で設定をしなければ, GetOptions() はオプション名の大文字小文字を 無視します. そしてユニークな範囲で省略することも許します. GetOptions ('length|height=f' => \$length, "head" => \$head); This call will allow C<--l> and C<--L> for the length option, but requires a least C<--hea> and C<--hei> for the head and height options. この指定において, C<--l> 及び C<--L> は length オプションとして 有効です. しかし head 及び height オプションに対しては少なくとも C<--hea> 及び C<--hei> が必要です. =head2 Summary of Option Specifications オプション指定方法の概要 Each option specifier consists of two parts: the name specification and the argument specification. 各オプション指定は2つの部分からなります: 名前指定及び引数指定. The name specification contains the name of the option, optionally followed by a list of alternative names separated by vertical bar characters. 名前指定にはオプションの名前が入ります. 任意で垂直線文字で区切られた 別名のリストも指定できます. length option name is "length" length|size|l name is "length", aliases are "size" and "l" The argument specification is optional. If omitted, the option is considered boolean, a value of 1 will be assigned when the option is used on the command line. 引数指定は省略可能です. 省略時にはオプションは真偽値として扱われ, コマンドラインでオプションが使用されたときには値 1 が設定されます. The argument specification can be 引数指定は以下の形式を取ることが出来ます: =over 4 =item ! The option does not take an argument and may be negated by prefixing it with "no" or "no-". E.g. C<"foo!"> will allow C<--foo> (a value of 1 will be assigned) as well as C<--nofoo> and C<--no-foo> (a value of 0 will be assigned). If the option has aliases, this applies to the aliases as well. オプションは引数を取らず, "no" もしくは "no-" で前置することで反転されます. 例えば C<"foo!"> は C<--nofoo> 及び C<--no-foo> (値 0 が設定されます) と同様に C<--foo> (値 1 が設定されます) を許可します. もしオプションが 別名を持っていれば別名にも同様に適用されます. Using negation on a single letter option when bundling is in effect is pointless and will result in a warning. 合成が有効なときに1文字オプションに反転を適用するのは筋の通らない (pointless) ことであり, 警告が発せられます. =item + The option does not take an argument and will be incremented by 1 every time it appears on the command line. E.g. C<"more+">, when used with C<--more --more --more>, will increment the value three times, resulting in a value of 3 (provided it was 0 or undefined at first). オプションは引数を取らず, コマンドラインに現れるたびに 1 ずつ インクリメントしていきます. 例えば C<"more+"> で の指定で C<--more --more --more> の引数を与えると3回増加され値 3 となります (初期値が 0 若しくは未定義だったとき). The C<+> specifier is ignored if the option destination is not a scalar. C<+> 指定は格納先がスカラーでなかったときには無視されます. =item = I [ I ] [ I ] The option requires an argument of the given type. Supported types are: このオプションは与えられた形式の引数を要求します. サポートされている形式は以下の通りです: =over 4 =item s String. An arbitrary sequence of characters. It is valid for the argument to start with C<-> or C<-->. 文字列. 任意の文字の集合. C<-> や C<--> から始まる引数も有効です. =item i Integer. An optional leading plus or minus sign, followed by a sequence of digits. 整数. 数値列の前に任意で正符号もしくは負符号をおけます. =item o Extended integer, Perl style. This can be either an optional leading plus or minus sign, followed by a sequence of digits, or an octal string (a zero, optionally followed by '0', '1', .. '7'), or a hexadecimal string (C<0x> followed by '0' .. '9', 'a' .. 'f', case insensitive), or a binary string (C<0b> followed by a series of '0' and '1'). 拡張整数, Perl形式. 任意で正符号もしくは負符号が前置されている 数字列, 若しくは8進数(0 に続けて任意の '0', '1', .. '7'), もしくは16進数 (C<0x> に続けて '0' .. '9', 'a' .. 'f', 大文字小文字は区別しない) もしくは2進数 (C<0b> に続けて '0' か '1' の列). =item f Real number. For example C<3.14>, C<-6.23E24> and so on. 実数. 例えば C<3.14>, C<-6.23E24> 等. =back The I can be C<@> or C<%> to specify that the option is list or a hash valued. This is only needed when the destination for the option value is not otherwise specified. It should be omitted when not needed. I にはオプションがリストかハッシュかに応じて C<@> 若しくは C<%> を指定することが出来ます. これはオプション値の格納先が 他に指定されていない時にのみ必要です. 必要なければ省略するべきです. The I specifies the number of values this option takes per occurrence on the command line. It has the format C<{> [ I ] [ C<,> [ I ] ] C<}>. I にはコマンドラインでこのオプションが受け取る値の個数を 指定します. C<{> [ I ] [ C<,> [ I ] ] C<}> の形式で指定します. I denotes the minimal number of arguments. It defaults to 1 for options with C<=> and to 0 for options with C<:>, see below. Note that I overrules the C<=> / C<:> semantics. I で引数の最小個数を示します. デフォルト値はオプションが C<=> で 指定されていれば 1, C<:> で指定されていれば 0 です. I は C<=> / C<:> セマンティクスを上書きすることに注意してください. I denotes the maximum number of arguments. It must be at least I. If I is omitted, I, there is no upper bound to the number of argument values taken. I で引数の最大個数を示します. 少なくとも I はなければなりません. もし I が省略されていてI<でもコンマは使われている>場合, 受け取る引数の個数の上限はありません. =item : I [ I ] Like C<=>, but designates the argument as optional. If omitted, an empty string will be assigned to string values options, and the value zero to numeric options. C<=> と同様ですが引数が任意であることを示します. もし(引数が)省略された場合には文字列値オプションには空文字列が, 数値 オプションには 0 が設定されます. Note that if a string argument starts with C<-> or C<-->, it will be considered an option on itself. もし文字列引数が C<-> 若しくは C<--> から始まっているときには それ自身でオプションとされるので注意してください. =item : I [ I ] Like C<:i>, but if the value is omitted, the I will be assigned. C<:i> と同様ですが, 値が省略されたときに I が設定されます. =item : + [ I ] Like C<:i>, but if the value is omitted, the current value for the option will be incremented. C<:i> と同様ですが, 値が省略されるときにオプションの値が増加されます. =back =head1 Advanced Possibilities 高度な可能性 =head2 Object oriented interface オブジェクト指向インターフェース Getopt::Long can be used in an object oriented way as well: Getopt::Long はオブジェクト指向的にも利用できます: use Getopt::Long; $p = new Getopt::Long::Parser; $p->configure(...configuration options...); if ($p->getoptions(...options descriptions...)) ... Configuration options can be passed to the constructor: 設定オプションはコンストラクターに渡すこともできます. $p = new Getopt::Long::Parser config => [...configuration options...]; =head2 Thread Safety スレッド安全性 Getopt::Long is thread safe when using ithreads as of Perl 5.8. It is I thread safe when using the older (experimental and now obsolete) threads implementation that was added to Perl 5.005. Getopt::Long は, Perl 5.8 の ithreads 環境においてスレッドセーフです. (実験的であり現在は非推奨の)Perl 5.005 threads実装 ではスレッドセーフ ではI<ありません>. =head2 Documentation and help texts ドキュメントとヘルプテキスト Getopt::Long encourages the use of Pod::Usage to produce help messages. For example: Getopt::Long はヘルプメッセージの生成に Pod::Usage を利用することを おすすめします. 使用例: use Getopt::Long; use Pod::Usage; my $man = 0; my $help = 0; GetOptions('help|?' => \$help, man => \$man) or pod2usage(2); pod2usage(1) if $help; pod2usage(-exitstatus => 0, -verbose => 2) if $man; __END__ =head1 NAME sample - Using Getopt::Long and Pod::Usage =head1 SYNOPSIS sample [options] [file ...] Options: -help brief help message -man full documentation =head1 OPTIONS =over 8 =item B<-help> Print a brief help message and exits. =item B<-man> Prints the manual page and exits. =back =head1 DESCRIPTION B will read the given input file(s) and do something useful with the contents thereof. =cut See L for details. 詳細は L 参照. =head2 Storing option values in a hash オプションをハッシュに格納 Sometimes, for example when there are a lot of options, having a separate variable for each of them can be cumbersome. GetOptions() supports, as an alternative mechanism, storing options in a hash. 時々, 例えば多くのオプションがある時などに, それぞれ別々の 変数を用意することは面倒なことです. そこで GetOptions() ではもう 1つのメカニズム, オプションのハッシュへの格納をサポートしています. To obtain this, a reference to a hash must be passed I to GetOptions(). For each option that is specified on the command line, the option value will be stored in the hash with the option name as key. Options that are not actually used on the command line will not be put in the hash, on other words, C (or defined()) can be used to test if an option was used. The drawback is that warnings will be issued if the program runs under C and uses C<$h{option}> without testing with exists() or defined() first. この機能を利用するには, ハッシュへのリファレンスを GetOptions() の I<最初の引数として>渡します. コマンドラインで指定されたそれぞれの オプションは, オプション名をキーとしてハッシュに格納されます. コマンドラインで実際には使われなかったオプションはハッシュには 置かれません. 言い換えると, オプションが使われたかどうかは C (もしくは defined()) でテストすることが できます. この方法の欠点は, C<$h{option}> を exists() や defined() で 確認なしに使うと, C の環境下では警告がでてしまうことです. my %h = (); GetOptions (\%h, 'length=i'); # will store in $h{length} For options that take list or hash values, it is necessary to indicate this by appending an C<@> or C<%> sign after the type: リストやハッシュ値をとるオプションでは, C<@> 若しくは C<%> を型の後に 追加する必要があります. GetOptions (\%h, 'colours=s@'); # will push to @{$h{colours}} To make things more complicated, the hash may contain references to the actual destinations, for example: さらに複雑なことに, ハッシュには実際に値を格納する先へのリファレンスを 置くことができます. 例えば: my $len = 0; my %h = ('length' => \$len); GetOptions (\%h, 'length=i'); # will store in $len This example is fully equivalent with: これは次の例を全く等価です: my $len = 0; GetOptions ('length=i' => \$len); # will store in $len Any mixture is possible. For example, the most frequently used options could be stored in variables while all other options get stored in the hash: 混在も可能です. 例えばよく利用するオプションは変数に, それ以外のオプションはハッシュの中に置くこともできます: my $verbose = 0; # frequently referred my $debug = 0; # frequently referred my %h = ('verbose' => \$verbose, 'debug' => \$debug); GetOptions (\%h, 'verbose', 'debug', 'filter', 'size=i'); if ( $verbose ) { ... } if ( exists $h{filter} ) { ... option 'filter' was specified ... } =head2 Bundling オプションの合成 With bundling it is possible to set several single-character options at once. For example if C, C and C are all valid options, 合成を使うことで, 複数の1文字のオプションを一度に指定することが できます. 例えば, C, C, C が有効なオプションであれば, -vax would set all three. は3つ全てを設定します. Getopt::Long supports two levels of bundling. To enable bundling, a call to Getopt::Long::Configure is required. Getopt::Long は2段階の合成を提供しています. 合成を有効に するためには Getopt::Long::Configure を呼び出す必要があります. The first level of bundling can be enabled with: 合成の1レベル目は以下の呼び出しで有効に出来ます: Getopt::Long::Configure ("bundling"); Configured this way, single-character options can be bundled but long options B always start with a double dash C<--> to avoid ambiguity. For example, when C, C, C and C are all valid options, これが設定されると, 1文字のオプションは合成されますが長い オプションは曖昧さを回避するために常に二重のダッシュ C<--> で 呼び出すB<必要があり>ます. 例えば, C, C, C, C が 全て有効なオプションの時, -vax would set C, C and C, but は C, C そして C を設定しますが, --vax would set C. は C を設定します. The second level of bundling lifts this restriction. It can be enabled with: 合成の2レベル目ではこの制限を取り除きます. 次の呼び出して有効に できます: Getopt::Long::Configure ("bundling_override"); Now, C<-vax> would set the option C. これで, C<-vax> はオプション C を設定するようになります. When any level of bundling is enabled, option values may be inserted in the bundle. For example: いずれかのレベルの合成が有効になると, オプションの値は 合成の中に入れることも出来ます. 例えば: -h24w80 is equivalent to は次と等価です. -h 24 -w 80 When configured for bundling, single-character options are matched case sensitive while long options are matched case insensitive. To have the single-character options matched case insensitive as well, use: 合成を設定したときには, 長いオプションは大文字小文字の区別が ないのにもかかわらず1文字のオプションは大文字小文字を区別 します. 1文字のオプションを同様に大文字小文字の区別を なくすためには次のようにします: Getopt::Long::Configure ("bundling", "ignorecase_always"); It goes without saying that bundling can be quite confusing. これは当然, スイッチ合成がとても混乱することになります. =head2 The lonesome dash 孤立したダッシュ Normally, a lone dash C<-> on the command line will not be considered an option. Option processing will terminate (unless "permute" is configured) and the dash will be left in C<@ARGV>. 通常, コマンドラインの孤独なダッシュ C<-> はオプションとして 認識されません. オプションの処理は("permute" が設定されて いなければ)終了し, ダッシュは C<@ARGV> に残ります. It is possible to get special treatment for a lone dash. This can be achieved by adding an option specification with an empty name, for example: 孤独なダッシュに対して特殊な処理を行うことも可能です. これは オプション仕様に空の名前を渡すことで行います, 例えば: GetOptions ('' => \$stdio); A lone dash on the command line will now be a legal option, and using it will set variable C<$stdio>. コマンドライン孤独なダッシュは正しいオプションになり, それを 使うことで変数 C<$stdio> が設定されます. =head2 Argument callback 引数コールバック A special option 'name' C<< <> >> can be used to designate a subroutine to handle non-option arguments. When GetOptions() encounters an argument that does not look like an option, it will immediately call this subroutine and passes it one parameter: the argument name. For example: my $width = 80; sub process { ... } GetOptions ('width=i' => \$width, '<>' => \&process); When applied to the following command line: arg1 --width=72 arg2 --width=60 arg3 This will call C while C<$width> is C<80>, C while C<$width> is C<72>, and C while C<$width> is C<60>. This feature requires configuration option B, see section L. =head1 Configuring Getopt::Long Getopt::Long の設定 Getopt::Long can be configured by calling subroutine Getopt::Long::Configure(). This subroutine takes a list of quoted strings, each specifying a configuration option to be enabled, e.g. C, or disabled, e.g. C. Case does not matter. Multiple calls to Configure() are possible. Alternatively, as of version 2.24, the configuration options may be passed together with the C statement: use Getopt::Long qw(:config no_ignore_case bundling); The following options are available: =over 12 =item default This option causes all configuration options to be reset to their default values. =item posix_default This option causes all configuration options to be reset to their default values as if the environment variable POSIXLY_CORRECT had been set. =item auto_abbrev Allow option names to be abbreviated to uniqueness. Default is enabled unless environment variable POSIXLY_CORRECT has been set, in which case C is disabled. =item getopt_compat Allow C<+> to start options. Default is enabled unless environment variable POSIXLY_CORRECT has been set, in which case C is disabled. =item gnu_compat C controls whether C<--opt=> is allowed, and what it should do. Without C, C<--opt=> gives an error. With C, C<--opt=> will give option C and empty value. This is the way GNU getopt_long() does it. =item gnu_getopt This is a short way of setting C C C C. With C, command line handling should be fully compatible with GNU getopt_long(). =item require_order Whether command line arguments are allowed to be mixed with options. Default is disabled unless environment variable POSIXLY_CORRECT has been set, in which case C is enabled. See also C, which is the opposite of C. =item permute Whether command line arguments are allowed to be mixed with options. Default is enabled unless environment variable POSIXLY_CORRECT has been set, in which case C is disabled. Note that C is the opposite of C. If C is enabled, this means that --foo arg1 --bar arg2 arg3 is equivalent to --foo --bar arg1 arg2 arg3 If an argument callback routine is specified, C<@ARGV> will always be empty upon successful return of GetOptions() since all options have been processed. The only exception is when C<--> is used: --foo arg1 --bar arg2 -- arg3 This will call the callback routine for arg1 and arg2, and then terminate GetOptions() leaving C<"arg2"> in C<@ARGV>. If C is enabled, options processing terminates when the first non-option is encountered. --foo arg1 --bar arg2 arg3 is equivalent to --foo -- arg1 --bar arg2 arg3 If C is also enabled, options processing will terminate at the first unrecognized option, or non-option, whichever comes first. =item bundling (default: disabled) Enabling this option will allow single-character options to be bundled. To distinguish bundles from long option names, long options I be introduced with C<--> and bundles with C<->. Note that, if you have options C, C and C, and auto_abbrev enabled, possible arguments and option settings are: using argument sets option(s) ------------------------------------------ -a, --a a -l, --l l -al, -la, -ala, -all,... a, l --al, --all all The surprising part is that C<--a> sets option C (due to auto completion), not C. Note: disabling C also disables C. =item bundling_override (default: disabled) If C is enabled, bundling is enabled as with C but now long option names override option bundles. Note: disabling C also disables C. B Using option bundling can easily lead to unexpected results, especially when mixing long options and bundles. Caveat emptor. =item ignore_case (default: enabled) If enabled, case is ignored when matching long option names. If, however, bundling is enabled as well, single character options will be treated case-sensitive. With C, option specifications for options that only differ in case, e.g., C<"foo"> and C<"Foo">, will be flagged as duplicates. Note: disabling C also disables C. =item ignore_case_always (default: disabled) When bundling is in effect, case is ignored on single-character options also. Note: disabling C also disables C. =item auto_version (default:disabled) Automatically provide support for the B<--version> option if the application did not specify a handler for this option itself. Getopt::Long will provide a standard version message that includes the program name, its version (if $main::VERSION is defined), and the versions of Getopt::Long and Perl. The message will be written to standard output and processing will terminate. C will be enabled if the calling program explicitly specified a version number higher than 2.32 in the C or C statement. =item auto_help (default:disabled) Automatically provide support for the B<--help> and B<-?> options if the application did not specify a handler for this option itself. Getopt::Long will provide a help message using module L. The message, derived from the SYNOPSIS POD section, will be written to standard output and processing will terminate. C will be enabled if the calling program explicitly specified a version number higher than 2.32 in the C or C statement. =item pass_through (default: disabled) Options that are unknown, ambiguous or supplied with an invalid option value are passed through in C<@ARGV> instead of being flagged as errors. This makes it possible to write wrapper scripts that process only part of the user supplied command line arguments, and pass the remaining options to some other program. If C is enabled, options processing will terminate at the first unrecognized option, or non-option, whichever comes first. However, if C is enabled instead, results can become confusing. Note that the options terminator (default C<-->), if present, will also be passed through in C<@ARGV>. =item prefix The string that starts options. If a constant string is not sufficient, see C. =item prefix_pattern A Perl pattern that identifies the strings that introduce options. Default is C<--|-|\+> unless environment variable POSIXLY_CORRECT has been set, in which case it is C<--|->. =item long_prefix_pattern A Perl pattern that allows the disambiguation of long and short prefixes. Default is C<-->. Typically you only need to set this if you are using nonstandard prefixes and want some or all of them to have the same semantics as '--' does under normal circumstances. For example, setting prefix_pattern to C<--|-|\+|\/> and long_prefix_pattern to C<--|\/> would add Win32 style argument handling. =item debug (default: disabled) Enable debugging output. =back =head1 Exportable Methods エクスポート可能なメソッド =over =item VersionMessage This subroutine provides a standard version message. Its argument can be: =over 4 =item * A string containing the text of a message to print I printing the standard message. =item * A numeric value corresponding to the desired exit status. =item * A reference to a hash. =back If more than one argument is given then the entire argument list is assumed to be a hash. If a hash is supplied (either as a reference or as a list) it should contain one or more elements with the following keys: =over 4 =item C<-message> =item C<-msg> The text of a message to print immediately prior to printing the program's usage message. =item C<-exitval> The desired exit status to pass to the B function. This should be an integer, or else the string "NOEXIT" to indicate that control should simply be returned without terminating the invoking process. =item C<-output> A reference to a filehandle, or the pathname of a file to which the usage message should be written. The default is C<\*STDERR> unless the exit value is less than 2 (in which case the default is C<\*STDOUT>). =back You cannot tie this routine directly to an option, e.g.: GetOptions("version" => \&VersionMessage); Use this instead: GetOptions("version" => sub { VersionMessage() }); =item HelpMessage This subroutine produces a standard help message, derived from the program's POD section SYNOPSIS using L. It takes the same arguments as VersionMessage(). In particular, you cannot tie it directly to an option, e.g.: GetOptions("help" => \&HelpMessage); Use this instead: GetOptions("help" => sub { HelpMessage() }); =back =head1 Return values and Errors 復帰値とエラー Configuration errors and errors in the option definitions are signalled using die() and will terminate the calling program unless the call to Getopt::Long::GetOptions() was embedded in C, or die() was trapped using C<$SIG{__DIE__}>. GetOptions returns true to indicate success. It returns false when the function detected one or more errors during option parsing. These errors are signalled using warn() and can be trapped with C<$SIG{__WARN__}>. =head1 Legacy 遺物 The earliest development of C started in 1990, with Perl version 4. As a result, its development, and the development of Getopt::Long, has gone through several stages. Since backward compatibility has always been extremely important, the current version of Getopt::Long still supports a lot of constructs that nowadays are no longer necessary or otherwise unwanted. This section describes briefly some of these 'features'. =head2 Default destinations デフォルトの格納先 When no destination is specified for an option, GetOptions will store the resultant value in a global variable named CI, where I is the primary name of this option. When a progam executes under C (recommended), these variables must be pre-declared with our() or C. our $opt_length = 0; GetOptions ('length=i'); # will store in $opt_length To yield a usable Perl variable, characters that are not part of the syntax for variables are translated to underscores. For example, C<--fpp-struct-return> will set the variable C<$opt_fpp_struct_return>. Note that this variable resides in the namespace of the calling program, not necessarily C
. For example: GetOptions ("size=i", "sizes=i@"); with command line "-size 10 -sizes 24 -sizes 48" will perform the equivalent of the assignments $opt_size = 10; @opt_sizes = (24, 48); =head2 Alternative option starters 開始記号の変更 A string of alternative option starter characters may be passed as the first argument (or the first argument after a leading hash reference argument). my $len = 0; GetOptions ('/', 'length=i' => $len); Now the command line may look like: /length 24 -- arg Note that to terminate options processing still requires a double dash C<-->. GetOptions() will not interpret a leading C<< "<>" >> as option starters if the next argument is a reference. To force C<< "<" >> and C<< ">" >> as option starters, use C<< "><" >>. Confusing? Well, B anyway. =head2 Configuration variables 設定変数 Previous versions of Getopt::Long used variables for the purpose of configuring. Although manipulating these variables still work, it is strongly encouraged to use the C routine that was introduced in version 2.17. Besides, it is much easier. =head1 Trouble Shooting トラブルシューティング =head2 GetOptions does not return a false result when an option is not supplied オプションが渡されなかった時に GetOptions が偽を返さない That's why they're called 'options'. それは 'options(選択可能なもの)' だからです. =head2 GetOptions does not split the command line correctly GetOptions がコマンドラインをちゃんと分解しない The command line is not split by GetOptions, but by the command line interpreter (CLI). On Unix, this is the shell. On Windows, it is COMMAND.COM or CMD.EXE. Other operating systems have other CLIs. It is important to know that these CLIs may behave different when the command line contains special characters, in particular quotes or backslashes. For example, with Unix shells you can use single quotes (C<'>) and double quotes (C<">) to group words together. The following alternatives are equivalent on Unix: "two words" 'two words' two\ words In case of doubt, insert the following statement in front of your Perl program: print STDERR (join("|",@ARGV),"\n"); to verify how your CLI passes the arguments to the program. =head2 Undefined subroutine &main::GetOptions called 未定義の関数 &main::GetOptions が呼ばれました Are you running Windows, and did you write use GetOpt::Long; (note the capital 'O')? =head2 How do I put a "-?" option into a Getopt::Long? "-?" オプションを Getopt::Long でどう扱えばいいですか? You can only obtain this using an alias, and Getopt::Long of at least version 2.13. use Getopt::Long; GetOptions ("help|?"); # -help and -? will both set $opt_help =head1 AUTHOR 著者 Johan Vromans =head1 COPYRIGHT AND DISCLAIMER 著作権及び免責事項 This program is Copyright 1990,2005 by Johan Vromans. This program is free software; you can redistribute it and/or modify it under the terms of the Perl Artistic License or the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is Copyright 1990,2005 by Johan Vromans. このプログラムはフリーソフトウェアです. あなたは Perl Artistic License もしくは Free Software Foundation による GNU General Public License バージョン2若しくは(望むのなら)それ以降の元で再配布及び改変を 行うことができます. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. このプログラムは役に立つことを祈って配布されていますが, 一切の保証はされません. いかなる需要や特定目的への適合している 保証さえもありません. 詳細は GNU General Public License を 参照してください. If you do not have a copy of the GNU General Public License write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. もし GNU General Public License のコピーを持っていないのなら, the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA 宛に手紙を送るとよいでしょう. =head1 TRANSALTE TO JAPANESE 和訳 山科 氷魚 (YAMASHINA Hio) Origlnal distribution is perl VERSION 5.8.8. Translated at 2006-08-04. 原典: perl VERSION 5.8.8. 翻訳日: 2006-08-04.