2004年03月07日

GetOptions(1)

GetOptionsに関するわかりやすい説明が見つからなかったのでちょっとやってみます。

まず、もっとも単純な構造は以下の通り

use Getopt::Long;
$ret = GetOptions("foo","bar");
print "$ret:$opt_foo/$opt_bar";
上記の例ではオプション「foo」「bar」があるかどうかを確認出来ますので以下のように
perl test.pl -foo -bar
と実行すると「1:1/1」と表示されます。
また、下記のようにすると
perl test.pl -bar
「1:/1」という結果となり
perl test.pl
とすると「1:/」という結果になります

次にオプションの値を取る場合ですが以下のようにします

use Getopt::Long;
$ret = GetOptions("foo=s","bar=i");
print "$ret:$opt_foo/$opt_bar";
上記の場合fooオプションには文字をbarオプションには数値を指定出来ます。
そこで以下のように実行すると
perl test.pl -foo aaa -bar 123
「1:aaa/123」という表示が帰ります。
また、下記のように数値に指定されているところに文字を入れると
perl test.pl -foo 123 -bar aaa
Value "aaa" invalid for option bar (number expected)
というエラーが表示されますが一応実行され「:/123」という値が戻ります。
ここで気がついたと思いますが、今までずーっと着いてきた最初の1が今回の出力にはありません。
つまり、オプションが正常に取得出来なかった場合、GetOptionsの戻り値がnullになります。
これを利用して
use Getopt::Long;
GetOptions("foo=s","bar=i") || die("GetOptions failed");
print "$opt_foo/$opt_bar";
という風に書き換えれば、オプションが正常にもらえなかった場合にプログラムを止めることが出来ます。

(2)へ続く

Posted by Takuchan at 2004年03月07日 00:48 | トラックバック(0)