3

ユーザーがコマンドを実行するときに指定する多数の引数を管理しようとしています。これまでのところ、次のようにGetopt :: Longで簡単に管理できるフラグとして引数を管理するように、スクリプトの設計を制限しようとしています。

GetOptions ("a" => \$a, "b" => \$b);

このようにして、aまたはbが指定されているかどうかを確認してから、それぞれのコード/関数を実行できます。

ただし、ユーザーが次のように2つの引数変数を指定できる場合があります。

command -a black -b white

これは問題ありませんが、最初に-aと-bのどちらが指定されているかを判断する良い方法を思い付くことができません。$ARGV[0]したがって、引数変数がに割り当てられているのか、$ARGV[1]実行後に割り当てられているのかわかりませんGetOptions ("a" => \$a, "b" => \$b);

-a上記の例で、どの変数が関連付けられ、どの変数が関連付けられているかを確認するにはどうすればよい-bですか?

4

2 に答える 2

6

Getoptはオプションへの引数をサポートしているので、たとえば次のように言うことができます。

GetOptions( 'a=s' => \$a, 'b=s' => \$b);
print "a is $a and b is $b";

質問のコマンドラインを使用すると、次のように出力されます。

a is black and b is white

その他のオプションについては、マニュアルページを参照してください。これは非常に強力なモジュールです。

于 2010-05-28T04:28:45.863 に答える
2
my $a = ''; # option variable with default value (false)
my $b = ''; # option variable with default value (false)

GetOptions ('a' => \$a, 'b' => \$b);

print "a is $a and b is $b\n

Getopt::Longのperlドキュメントを確認してください。このドキュメントから。

GetOptions()の呼び出しは、@ ARGVに存在するコマンドライン引数を解析し、オプションがコマンドラインで発生した場合はオプション変数を値1に設定します。それ以外の場合、オプション変数は変更されません。オプション値をtrueに設定することは、多くの場合、オプションの有効化と呼ばれます。

GetOptions()関数に指定されたオプション名は、オプション指定と呼ばれます。後で、この仕様にはオプション名以外のものを含めることができることがわかります。変数への参照は、オプションの宛先と呼ばれます。

コマンドラインを正常に処理できた場合、GetOptions()はtrue値を返します。それ以外の場合は、エラーメッセージをSTDERRに書き込み、誤った結果を返します。

また、これも役立ちます。

于 2010-05-28T04:35:00.567 に答える