• 締切済み

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"; ... 上手くいかなかったです↑↑↑

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>でもこれを使わずに出来るほうが引数指定が分かり易いのでその方法を探しているのですがそれは不可能なのでしょうか? 質問者の環境で実行した時、現在のオプションやファイルの指定の仕方で問題が生じるということなので、そのままでは、方法はないかと思います。 オプションの指定自体はうまくいくということなので、 -file file.txt などのようにオプションでファイル名を渡すようにするというのも1つの方法かと思いますが 「引数指定が分かり易い」は、多分に主観的なモノで、「--」は、古くからあるPerlの記法なので、Perlを使っている人にとっては特別わかりにくくはありません。(というより、わかりやすい)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>オプションがあるとARGVにfile.txtが入らないのです。 ウチでは特に問題なかったですが、 もしオプションがある時にARGVがおかしくなるようだったら test.pl -a -b opt -- file.txt とすると良いです。 --でオプションの終わりを指示できます。

tk_1980024
質問者

補足

有難うございます。-- を使う方法は参考になりました。でもこれを使わずに出来るほうが引数指定が分かり易いのでその方法を探しているのですがそれは不可能なのでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

use Getopt:Std;→use Getopt::Std; 'ab:→'ab:' だと思われます。 質問文の場合、 $opt_aに"1"が、 $opt_bに"opt"が入ります。

tk_1980024
質問者

補足

タイプすみませんでした。 optは問題ないのですが、オプションがあるとARGVにfile.txtが入らないのです。 引き続き宜しくお願いします。・

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どう「上手くいかなかった」んですか?

関連するQ&A