Best.pm いずれかのモジュールをuse


CPAN Recent Changesを読んでたら、Bestっていうモジュールが目に留まった(名前が派手なので)。

何をするモジュールなのか見てみると、こんなことをしてくれるらしい。

use Best qw(YAML::Syck YAML);

とすると、前に書いたものから順番にロードしてみて、うまくいったら終了、両方なければdie。


これは結構使えるかも、と思って試してみるけど、インターフェースが微妙で、実際に use したモジュールは

Best->which('YAML::Syck');

とすると取れるんだけど、実際にはこんなコードを書かないといけない。

my $module = Best->which('YAML::Syck') || 'YAML';

こんな感じで書けたらいいのかも。whichって名前なんだし。

use Best qw(YAML => qw/YAML::Syck YAML/);
my $module = Best->which('YAML'); # YAML::Syck or YAML


実際の使用例はこんな感じ。
ちょっときれいに書けるようになるだけだけど。


YAML

use Best qw(YAML::Syck YAML);
my $obj = Load($yaml);


JSON

use Best qw(JSON::Syck JSON);
my $obj = Best->which('JSON::Syck') ? JSON::Syck::Load($json) : jsonToObj($json);


どちらかのモジュールをuseさせるためにモジュールをインストールさせるのは微妙だけど。。