モジュールローダがいくつもあってよくわからんという話が twitter にかいてあったので、俺の選定基準をまとめてみた。
perl 5.10+ で標準添付。癖もないので、基本的にはこれでいい。
$module->require() or die $@ ってかけるのが cool という話ではあるのだが、UNIVERSAL をつかうのに抵抗があるかもしれない。
そして、Module::Load にたいする優位性はとくにないので、最近はあまりつかってない。
上記2つにくらべると、機能がおおい。これは Moose から派生したパッケージで、Moose の is_class_loaded 相当の機能もそなえている。
Moose 由来ということで、%INC の中にはいっていなくても、package がすでにつかわれていれば、ファイルをよみにいかないという点がすぐれている。具体的には
package Foo; sub bar { } package main; use Class::Load qw/load_class/; load_class('Foo');
がエラーにならない。
これはたとえば、DBIx::Skinny などで、スキーマ定義とスクリプト本体を1ファイルにかいておきたいときなどにつかえる。
なので、最近のバージョンの DBIx::Skinny では Class::Load を採用している。