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;
簡単ですね!これがふと目を離した隙に(?)いつのまにやらスタッフにコミットされてて、使ってみたらすげぇ重宝してる。
コメント