http://dann.g.hatena.ne.jp/dann/20080702/p4

MooseX::Getoptを紹介するならMooseX::ConfigFromFileも是非どうぞ。
package MyApp; use Moose; with 'MooseX::Getopt'; with 'MooseX::ConfigFromFile'; # 引数の設定・・・ no Moose; sub get_config_from_file { my ($self, $file) = @_; # ファイルから読み込む・・・ return \%config; }

これだけでコマンドラインからも、設定ファイルからも引数を渡せるよ!
ちなみにget_config_from_fileの部分は、Config::Anyを使いたいので、以下のようにしている
sub get_config_from_file my( $class, $file ) = @_; if (! $file || ! -f $file) { return {}; } my $cfg = Config::Any->load_files({ files => [ $file ], use_ext => 1, driver_args => { General => { -LowerCaseNames => 1 } } }); return $cfg->[0]->{$file} or die "Could not load $file"; }
あと、一つのプロジェクトでこういうスクリプトがたくさんある場合は、これ全体をRoleにしてしまうと便利。
package MyApp; use Moose; with 'MyApp::WithConfigFile'; no Moose;
簡単ですね!これがふと目を離した隙に(?)いつのまにやらスタッフにコミットされてて、使ってみたらすげぇ重宝してる。