日向夏特殊応援部隊

俺様向けメモ

Makefile.PLと環境依存な設定値について

結構悩み中です。なんか良いCPANモジュールあればいいのになぁ。

はじめに

Perlモジュールを作っていると、どうしても環境依存な設定値ってのが必要なシーンがある。
例えばDBD::mysqlなんかだとテスト用のデータベースの所在だとか聞かれるけど、ああいう奴の事。

やりたいことってのは、

  1. perl Makefile.PLで何らかの形でユーザー定義の設定値を保存
  2. make test時に設定値を有効にする
  3. 開発時の単体でのテストではMakefile.PLで設定した設定値は無効

なんて事をやりたい。

Makefile.PLをめぐるアレコレ

ExtUtils::MakeMaker::prompt()

とりあえずinteractiveにユーザーに問い合わせるにはprompt()関数でOKだと思う。

my $apache_dir = prompt("your apache dir: (default: /usr/local/bin/)", "/usr/local/bin");

みたいな感じ。
ただこれはユーザーに問い合わせるだけなので、いずれにせよ何らかの形で保存しないとダメ。

Module::TestConfig

このモジュールはまさにやりたい事に限りなく近いのだが、とりあえずインストール出来なかった罠。
かなり古いモジュールのようだし、使ってる様子もGoogle Code Searchでは無かったのでステ。

CGI::UploaderのMakefile.PL

CGI::UploaderのMakefile.PLは力業でやってます。
でもエレガントとは言いがたい。

Filter::CryptoのMakefile.PL

Filter::CryptoのMakefile.PLですけど、
こちらはかなりModule::InstallのPrivate Extensionを駆使なさってる。

  1. inc::Module::Install::PRIVATE
  2. inc::Module::Install::PRIVATE::Filter::Crypto

いずれもこの方の拡張ですけど、毎回こういうの置いていくのもなぁ。

で結論

とりあえず誰か良い方法知ってたら是非教えて下さい。orz...

ってかそういうモジュールを作るってのが一番良さそうな気がする。
ふぅ。