Config::Perl::Tinyというのを書いてみた
https://github.com/kotaroito/p5-Config-Perl-Tiny
書いてみたといってもCPANにうpしたわけではない。
perl形式の設定ファイルをロードする方法をメモるついでに、CPAN形式でモジュールを書いてみようと思っただけ。あとGithubに置いてみたかったというくだらない理由も。なので、CPANに公開する予定はなし、というか無理(キリッ
使い方はしょうもないけど、こんな感じ。
my $config = Config::Perl::Tiny->new(path => './config.pl')->load;
実装はどうなってるかというと、ファイルを読み込んでevalするだけ。$/は入力セパレータでデフォルトは改行文字だけど、ここではundefにしてるのがミソ。これで一気読みできる。(一応書いておくと、ほぼperlcodesampleのままです)
open( my $fh, '<', $path ) or die $!; my $text = do{ local $/; <$fh> }; close $fh or warn $!; my $config = eval($text); die $@ if ($@);
設定ファイルに日本語とか書かなければ、これでも十分かなと思います。サービスで使うのは考えものだけど、テストやちょっとしたスクリプトなら。
所感
はじめてCPAN形式でgithubにうpしてみたけど、MANIFESTやらMakefile.PLやらよくわかってないこと多い >_<
http://perldoc.jp/docs/perl/5.8.0/perlnewmod.pod
http://mt.endeworks.jp/d-6/2008/03/perlmake.html
あたりをみて勉強せねば。
あと名前空間の使い方って難しい。というか、Config::Loader::xxxのほうがいいのかもしれない。とにかく難しい。
追記
Config::Anyとかをつかうといいのかもしれない。調べてみる。
追記2
xaicronさんから「それdoで」というありがたい指摘が...ちーん。
kotaro@mac:~> perl -MData::Dump=dump -le 'dump do("./tmp/config.pl")' { foo => 1 }
まだまだ知らないことたくさんだ >_