- 締切済み
perlの引数でオプションとオプションなしの両者を扱える方法
test.pl -a -b opt file.txt のようにオプション付きの引数とそうではない場合の引数を準備したいのですが、どの様にしたら良いのでしょうか? イメージ use Getopt:Std; getopts('ab:); if($opt_a){...} if($opt_b){...} open(IN, "$ARGV[0]") || die "error"; ... 上手くいかなかったです↑↑↑
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>でもこれを使わずに出来るほうが引数指定が分かり易いのでその方法を探しているのですがそれは不可能なのでしょうか? 質問者の環境で実行した時、現在のオプションやファイルの指定の仕方で問題が生じるということなので、そのままでは、方法はないかと思います。 オプションの指定自体はうまくいくということなので、 -file file.txt などのようにオプションでファイル名を渡すようにするというのも1つの方法かと思いますが 「引数指定が分かり易い」は、多分に主観的なモノで、「--」は、古くからあるPerlの記法なので、Perlを使っている人にとっては特別わかりにくくはありません。(というより、わかりやすい)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>オプションがあるとARGVにfile.txtが入らないのです。 ウチでは特に問題なかったですが、 もしオプションがある時にARGVがおかしくなるようだったら test.pl -a -b opt -- file.txt とすると良いです。 --でオプションの終わりを指示できます。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
use Getopt:Std;→use Getopt::Std; 'ab:→'ab:' だと思われます。 質問文の場合、 $opt_aに"1"が、 $opt_bに"opt"が入ります。
補足
タイプすみませんでした。 optは問題ないのですが、オプションがあるとARGVにfile.txtが入らないのです。 引き続き宜しくお願いします。・
- Tacosan
- ベストアンサー率23% (3656/15482)
どう「上手くいかなかった」んですか?
補足
有難うございます。-- を使う方法は参考になりました。でもこれを使わずに出来るほうが引数指定が分かり易いのでその方法を探しているのですがそれは不可能なのでしょうか?