前回、各foo、barそれぞれのオプションの引数を文字でとか数値でとかという風に書きましたが、実際は「オプション名=1文字」という書式で1文字の部分(記述子といいます)でどう処理するか決めています。
記述子の対応は以下のようになってます。
| s | 文字列 |
| i | 整数値(負の数を含む) |
| f | 実数値(負の数を含む) |
上記をふまえて前回最後のものを書き換えてみます。
use Getopt::Long;
GetOptions("foo:s","bar=f") || die("GetOptions failed");
print "$opt_foo/$opt_bar";
これを実行すると以下のようになります
perl test.pl -foo -bar 123.45それから、長いオプション名と短いオプション名の両方を使えるようにする方法もあります。
/123.45perl test.pl -foo aaa -bar
Option b requires an argument
GetOptions failed at test.pl line 2.
use Getopt::Long;
GetOptions("foo|f:s","bar|b=f") || die("GetOptions failed");
print "$opt_foo/$opt_bar";
上記のようにすると
perl test.pl -f aaa -b 123.45としてもちゃんと「aaa/123.45」という値が表示されます。
それから、
use Getopt::Long;
GetOptions("foo|f:s" => \$foo,"bar|b=f" => \$bar) || die("GetOptions failed");
print "$foo/$bar";
とすることで「$opt_なにがし」ではなく指定の変数にダイレクトに代入することも出来ます。ここまで判ればリファレンスが読めるようになると思いますので、細かい点についてはそちらを参照してください。