2012-01-18 9 views
0

私のPerlスクリプトは、以下の方法で引数を取得します。コマンドライン引数を取得するGetoptions関数があります。Perl GetOptions関数

./test.pl -mode report -writeid 12 13 23...... 
$rc=GetOptions('mode=s' => \$cmdParams{mode} 
      ,'writeid:i{1,}' => \@writeid 
      ,'h|?|help' => \$help 
     ); 

私はそれが失敗していないwriteidオプションで英数字を持っているときに問題があります。 Writeidは整数(i {1、})として定義され、1から多くの値を受け取ることができます。 2番目の値に英数字があると失敗しません。 ./test.pl -modeレポートは

...... A3 23 12を-writeid私にできる回避策は何ですか?

+2

、あなたは私たちに、標準のgetopt無数のどの:: *使用しているCPANからモジュールを示すことができました。そして、おそらく、 '12'は(唯一の)数字オプションであり、' A3'と '23'を非オプション( 'ファイル名')引数として残している可能性が最も高いでしょう。 –

答えて

2

GetOptions関数を使用しているので、私はあなたがGetOpts :: Longを使用していると仮定しています。オプション仕様の "{1、}"の1つ以上の数量の問題は、あなたは "成功"しました。定量スペックを削除して 'writeid:i' => \ @writeidで実行した場合、各write_idの前にコマンドラインのフラグを置かなければならないため、解析に失敗したときにエラー状態になります。手始めに

+0

ありがとうございました。私はおそらく、-w 12 -w 13 -w 14としてフラグ-wを作るこの – Arav

+0

を解決するために何ができるかの回避策-writeid 1 22 33を持つようにしたい-writeid 1 -writeid 2 -writeid 3.指定したいいけません書くのは簡単でしょうか? 私は、私はあなたが行うことができます他に何が表示されない:( – SkryneSaver

+0

何の問題をより便利に、しかしgetoptsはモジュールをハッキングせずに何かを提供することはできません申し訳ありません。ありがとうございました。 – Arav

関連する問題