Module::Pluggable は大変ステキっぽい気がする

Module::Pluggable は大変ステキっぽい気がする #

プラグイン形式で機能を増やせるようにするって時に、今までワシがやっていたことは

 # plugin ディレクトリ以下のディレクトリ構造から、プラグインリスト取得。
 # コードは省略
 for my $plugin (@plugins) {
   eval {
     require "plugin/Hoge/Fuga.pm";
     Hoge::Fuga->exec();
   };
   if ($@) {
     # エラー処理
   }
 }

という感じなんだが、Module::Pluggable を使うと

 package Hige;
 use Module::Pluggable requre => 1;
  .
  .
  .
 1;

 package Hige::Plugin::Hoge;
  .
  .
  .
 1;

とかして、本体で

 my $mc = Hige->new();
 my @plugins = $mc->plugins(); # plugin 一覧取得
 for my $plugin (@plugins) {
   next if $plugin->can('exec');
   $plugin->exec();
 }

で OK。
なんだか幸せになれそうな予感。

See Also

Copyright © 髭。/ Hugo + hugo-book