コードを修正した後にコンパイルやテスト、所定の位置にインストールする作業は、とにかく面倒な作業です。Perlでは、David GoldenさんがメンテナンスしているModule::Buildというモジュールを使えば、複数のモジュールやスクリプトのビルド(テストやインストール)を自動化できます。
この様なモジュールには他にExtUtils::MakeMakerや、Module::Installも有りますが、ここでは一例としてModule::Buildを扱います。
なお、Module::Buildが標準モジュールになったのはPerl 5.10.0以降なので、5.8.9以前を使っている場合はCPANやMacPortsからインストールして下さい。
インストールが完了したら、以下の手順で使います。
Build.PLの修正
scriptフォルダの指定
build_requires、requiresの指定
Buildコマンドの生成
Buildコマンドの実行
./Build
./Build test
sudo ./Build install
./Build install clean
モジュールやスクリプトのインストール先や、テスト実行時の設定はBuild.PLへ記述します。
.pl形式のスクリプト本体は場所を個別に指定する必要が有ります。
my $builder = Module::Build->new(
module_name => 'Foo::Bar',
script_files => 'script/test.pl',
この例では、scriptフォルダ配下に、test.plというスクリプトがある事をModule::Buildに教えています。これでModule::Buildでインストールを実行すると、指定したファイルは/usr/local/binへコピーされます。lib配下のモジュールは勝手に認識して全てコピーされますが、scriptは個別に指定する必要が有ります。
ちなみにbinディレクトリ配下に実行形式のファイルが有ると上記のように指定しなくても、勝手にModule::Buildが認識してコピーしてくれますので、スクリプト本体をbinディレクトリ配下に配置するか、scriptフォルダ配下に配置するかは、決める必要が有ります(Module::BuildのドキュメントではbinディレクトリはOS固有の実行形式ファイルを置く所と定義されています)。
build_requiresは、ビルド時に必要なモジュール(テスト用のモジュール等)、requiresには実行時に必要なモジュールを指定します。ここで指定されたモジュールがインストールされていないと、Build.PLを実行した時にエラーが表示され、インストールを促されます。
こんな形で指定します。バージョンを特に指定しない場合は0、最低限必要なバージョンを指定する場合はバージョンナンバーを指定します。
build_requires => {
'Test::More' => 0,
},
ひとまず最低限ここまでの設定が出来れば、コード書いて、試験するところまでは出来ます。あとはインストール先の指定がおそらく必要ですが、ここでは割愛します。
Build.PLの修正が完了したら、Buildコマンドを生成します。
$ perl Build.PL
先ほどの修正が間違っていたり、必要なモジュールがインストールされていなければ、この段階でエラーが出ますので確認して下さい。
Buildコマンドは実行形式になっているので、実行すれば必要な処理を行います。
blibディレクトリ配下へ必要なファイルをコピーし、テストの準備を行います。元のコードを修正しても、勝手にテスト対象のディレクトリにはコピーされませんので、必ずコード修正後にはこのコマンドを実行する必要が有ります。
blib配下にコピーされたコードを対象にテストを実行します。
テストが終わったコードを所定の場所へインストールします。インストール先を指定するためのパラメータもここで指定する事が出来ます。
不要になったblibディレクトリを削除します。

コメントする