私はPerlスクリプトでGetopt::Stdを使ってコマンドラインから値を収集しようとしています。Getopt :: Stdを使用してデフォルト値を設定するにはどうすればよいですか?
use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = 1;
getopts('i:o:p:');
my $inputfile = our $opt_i;
my $outputfile = our $opt_o;
my $parameter_value = our $opt_p;
ここで最初の二つの変数($入力ファイルは、$ OUTPUTFILE)が必須ですが、最後の変数($ PARAMETER_VALUE)はオプションであり、無視することができます。
-p
フラグがコマンドラインで無視されたときに、最後の変数($ parameter_value)にデフォルト値を設定しようとしています。
は、私はこれを使用してみました:ここ
my $parameter_value = our $opt_p || "20";
そのパス-pフラグは、コマンドラインでは無視され、正しい値。しかし問題は、私がコマンドラインからいくつかの値を提供しているとき(例えば-p 58)、コマンドラインから渡された58の代わりに同じ値20がプログラムに渡されるときです。
ここで間違いを指摘して私を助けてもらえますか?
ありがとうございます。
良い+1 :) = +1 – DVK
thanx Sinan、これはとてもうまく動作し、コーディングのフォーマットを保持します。 Thanx a ton。 – Suren
5.10+を使用している場合、後者は定義済みではなく真理をテストするので、 '||'の代わりに '/'を使う方が良いでしょう。偽の値(0など)を渡すことができなくなります。 5.10より前の同等の動作を得るには、 '$ x = defined $ y? $ y:Z'ここで 'Z'はデフォルト値です。 –