多くのコマンドラインオプションを渡して私のperlスクリプトを呼び出します。スクリプトの起動中に必要なコマンドラインオプションがユーザーによって渡されない場合、スクリプトは終了する必要があります。現在、私はif statement
を使って簡単なチェックをしています。必要な引数が10より大きい場合は、If文を使用してclunkyになります。私はif文を使うよりも良い方法があるのだろうかと思っています。perlのコマンドラインオプション
コマンドラインオプション:
sub startup {
my ($self) = @_;
GetOptions (
"endpoint|e=s" => \$self->{'endpoint'},
"port|pt=s" => \$self->{'port'},
"client|c=s" => \$self->{'client'},
"client_interface|ci=s" => \$self->{'client_interface'},
"origin|o=s" => \$self->{'origin'},
"origin_interface|oi=s" => \$self->{'origin_interface'},
"customer_id|cid=s" => \$self->{'customer_id'},
"endpoint_id|eid=s" => \$self->{'endpoint_id'},
) || $self->abort("Invalid command line options.
Valid options are endpoint,port,client,client_interface,
origin,origin_interface,customer_id,endpoint_id");
#Terminate --endpoint IPと--customer idとは、スクリプトを呼び出すために
if (!$self->{'endpoint'} || !$self->{'customer_id'} || !$self->{'client'}){
$self->abort('[Startup] endpoint customer and client are required arguments.'
. 'Please provide --endpoint and --customer id and -- client ');
}
コマンドを--client渡されていない場合は、スクリプトの実行:
./testframework --scriptname -- --endpoint=198.18.179.42 --port=5000 --client=1.1.1.1 --client_interface=2.2.2.2 --origin=3.3.3.3 --origin_interface= --Outertunnel=Tunnel0 --Innertunnel=Tunnel2 --customer_id=900010 --endpoint_id=2859588
「GetOptions」の使用が正しいと思います。しかし、あなたは設計上の問題を示している可能性のあるパラメータが多すぎます...これらの議論には妥当なデフォルトがありますか?それらは特定のマシンに結び付けられているので、代わりに設定ファイルの一部になるのに適していますか?それらを入力として提供するのではなく、スクリプトで直接推測することはできますか?私はむしろそれに取り組んでいます。 – eballes
@eballes IPは異なっています。私はGetOptionsから取り除くことができるものは何もありません。私たちは複数のテストベッドを持っており、すべてのマシンでスクリプトを実行します。 – user3587025
'Getopt :: Args'では必要なオプションを指定できます(矛盾?)。 – toolic