重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

test.pl -a -b opt file.txt
のようにオプション付きの引数とそうではない場合の引数を準備したいのですが、どの様にしたら良いのでしょうか?

イメージ
use Getopt:Std;
getopts('ab:);
if($opt_a){...}
if($opt_b){...}
open(IN, "$ARGV[0]") || die "error";
...

上手くいかなかったです↑↑↑

A 回答 (4件)

>でもこれを使わずに出来るほうが引数指定が分かり易いのでその方法を探しているのですがそれは不可能なのでしょうか?


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

>オプションがあるとARGVにfile.txtが入らないのです。


ウチでは特に問題なかったですが、
もしオプションがある時にARGVがおかしくなるようだったら

test.pl -a -b opt -- file.txt

とすると良いです。
--でオプションの終わりを指示できます。

この回答への補足

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

補足日時:2005/04/20 11:49
    • good
    • 0

use Getopt:Std;→use Getopt::Std;


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

この回答への補足

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

補足日時:2005/04/15 02:20
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!