読者です 読者をやめる 読者になる 読者になる

Config::Perl::Tinyというのを書いてみた

perl

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 }

まだまだ知らないことたくさんだ >_