高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Getopt::Long

Tracの閲覧・編集・管理権限は細かく分かれていて、ユーザーごとにどの権限を付与するかを管理ツール「trac-admin」を使って付与できるようになっています。
ただ、コマンドラインだけでパーミッションを付与するのは骨が折れるので、スクリプトを使って処理することにしました。
というわけで、Perlと、汎用的にするためにGetopt::Longの出番。シェルスクリプトよく知らないので・・・(^^ゞ


とりあえずGetopt::Longを使うに当たり、躓いたところをメモしておこうと思います。
とはいえ、難しいモジュールではないので、以下のように書けばOK。なお、文中の%argvはコマンドラインの解析結果が入るハッシュリスト。デフォルト値などを設定できますが、必要なければ値を設定する必要はありません。

use Getopt::Long;
my %argv;
GetOptions(\%argv, "a=s", "b"));

このスクリプトを

scriptname.pl --a=a --b

として起動すれば、argv{a}にa,argv{b}に1が入ります。=s*1を書いていないパラメータに=をつけるとパラメータが指定されていないと怒られるので注意。まあ、普通に考えてみればわかりますけどね(^_^;
一応

use Getopt::Long;
my %argv;
GetOptions(\%argv, "a", "b"));

として

scriptname.pl --a=a --b

で警告が出てはまりましたよ、というわけで。

*1:sは文字列のs、同様にiとすれば引数を数値のみに絞ることもできるそうです