GETOPT(3) USER COMMANDS GETOPT(3) NAME getopt - まとめることも可能な、1 文字スイッチの処理 getopts - まとめることも可能な、1 文字スイッチの処理 GetOptions - 拡張した getopt 処理 SYNOPSIS use Getopt::Std; getopt('oDI'); # -o、-D、-I は引数をとることができ、 # opt_* に値を設定 getopts('oif:'); # -o、-i は引数をとらず、-f は引数をとる # オプションはこれだけ use Getopt::Long; $result = GetOptions (...option-descriptions...); DESCRIPTION getopt() 関数と getopts() 関数は、まとめることも可能な、1 文 字スイッチの処理を行ないます。 getopt() 関数の引数は、引数 をとるすべてのスイッチを並べた文字列を指定します。 ここに指 定されない文字は、引数をとれないスイッチとして使用することが できます。 getopts() 関数の引数にも、スイッチとして使用でき る文字を並べた文字列を指定しますが、引数をとるもの、とらない もの双方を指定し、引数をとるものは直後に ':' を置くことで示 します。 ここに指定しない文字は、スイッチとして使用できませ ん。 スイッチが見つかると、(そのスイッチが x とすると) 変数 $opt_x に、引数の値か、引数のないものは 1 が設定されます。 引数をとるスイッチでは、引数との間にスペースがあっても、なく てもかまいません。 Getopt::Long モジュールは、GetOptions() という拡張 getopt 関 数をインプリメントするものです。 この関数は、新しい構文 (オ プションをまとめず、長いオプション名) を追加するものです。 伝統的なものや GNU や POSIX の getopt() 関数のよりよい機能性 をインプリメントするものです。 option-description は、Perl の識別子として有効なものでなけれ ばならず、引数記述子を付けることができます。 引数記述子には、以下のものが使用できます: <none> オプションは引数をとらない ! オプションは引数をとらず、否定できる =s :s オプションは必須の(=) か省略可能な(:) 文字列引数をとる =i :i オプションは必須の(=) か省略可能な(:) 整数引数をとる =f :f オプションは必須の(=) か省略可能な(:) 実数引数をとる Perl module manpages Last change: Release 5.0 Patchlevel 00 1 GETOPT(3) USER COMMANDS GETOPT(3) "name" というオプションが指定されると、Prel の変数 $opt_name が、指定された値に設定されます。 呼びもとのプログラムでは、 この変数を使って、該当のオプションが指定されたかを調べること ができます。 引数をとらないオプションは、1 が設定されます。 省略可能な引数をとるオプションでは、引数が無いときには、定義 済みとなりますが、'' が設定されます。 引数記述子に "@" を付け加えると、オプションは配列として扱わ れます。 値は設定されるのではなく、配列 @opt_name に push されます。 値をとらないオプションには、"!" 引数記述子を指定することがで き、これによって否定オプションが使えます。 つまり、"foo!" とすると、-foo ($opt_foo が 1 になる) と -nofoo ($opt_foo が 0 になる) が許容されるようになります。 オプション名は、"foo|bar|blech=s" のように '|' で区切ったオ プション名のリストにすることもできます。 この例では、オプシ ョン 'bar' とオプション 'blech' は $opt_foo を設定することに なります。 コンフィギュレーション変数 $autoabbrev の設定によって、オプ ション名を、ユニークな範囲で省略することができるようになりま す。 オプション名には、(pcc-struct-return のように) ハイフンを使 うことができ、対応する Perl 変数では、($opt_pcc_struct_return のように) 下線に変換されます。 単独のハイフンが使われたとき も、オプションとして扱われ、Perl の変数 $opt_ に対応します。 ハイフンを 2 つ並べ、"--" とするとオプションリストの終わりを 示します。 リストの最初のオプションが英字以外の文字だけからなるときは、 それが一般のオプション開始文字列として解釈されます。 その開 始文字列のいずれかの文字で始まるものがオプションとなります。 デフォルトのオプション開始文字は、(伝統的な) "-"、(POSIX の) "--"、(使われなくなってきていますが、GNU の) "+" が使えます。 "--" で始まるオプションは、"--foo=bar" のように "=" で区切っ て、引数を付けることができます。 コンフィギュレーション変数 $getopt_compat をゼロ以外に設定す ると、"+" で始まるオプションも "+foo=bar" のように引数をとる ことができます。 この関数がエラーを検出すると、リターン値として 0 (偽) を返し ます。 Perl module manpages Last change: Release 5.0 Patchlevel 00 2 GETOPT(3) USER COMMANDS GETOPT(3) EXAMPLES オプション "one:i" (つまり、省略可能な整数引数をとる) なら、 次のように解釈されます: -one -two -> $opt_one = '' で -two は次のオプション -one -2 -> $opt_one = -2 また、"foo=s" かつ "bar:s" なら: -bar -xxx -> $opt_bar = '' で '-xxx' は次のオプション -foo -bar -> $opt_foo = '-bar' -foo -- -> $opt_foo = '--' となります。 GNU や POSIX のフォーマットでは、オプション名と値は、組み合 わせることができます: +foo=blech -> $opt_foo = 'blech' --bar= -> $opt_bar = '' --bar=-- -> $opt_bar = '--' $autoabbrev オプション名をユニークな範囲で省略できるようにし ます。 環境変数 POSIXLY_CORRECT が設定されない 限り、デフォルトは 1 です。 $getopt_compat '+' でオプションを開始できるようにします。 環境 変数 POSIXLY_CORRECT が設定されない限り、デフォ ルトは 1 です。 $option_start オプションの開始を示す正規表現です。 環境変数 POSIXLY_CORRECT が設定されていれば、デフォルトは (--|-) で、設定されていなければ、(--|-|\+) です。 $order オプション以外のものとオプションを混ぜて使えるか を指定します。 環境変数 POSIXLY_CORRECT が設定 されていれば、デフォルトは $REQUIRE_ORDER で、設 定されていなければ、$PERMUTE です。 $ignorecase オプションとマッチングするとき、大文字小文字を区 別しないことを指定します。 デフォルトは 1 です。 $debug デバッグ出力を可能にします。 デフォルトは 0 で す。 NOTE まだ、Exporter を使っていません。 パッケージさえも使ってい ません。 つまり、本当のモジュールではありません。 Perl module manpages Last change: Release 5.0 Patchlevel 00 3