モジュール作成

いい加減、makefileのついたモジュール作りたいなーと思って始めた。モジュール整理。結構面倒だった...orz
最終的にはテストが楽しくて、面白かったけど。今後、忘れそうな事などまとめてメモ!

まずはインストール!

cpan> install Module::Starter
cpan> install Module::Starter::PBP
cpan> install Module::Starter::Smart

※通常だとモジュールの追加が出来ないので、追加できるようにするためにModule::Starter::Smartも一緒にインストールする。

次にターミナル上で以下のコマンドを入力。名前とメルアドの設定をする。

$ perl -MModule::Starter::PBP=setup

Please enter your full name : UnyaUnya
Please enter an email address : unyaunya@mail.com

すると、自分のホームディレクトリ以下~/.module-starterが作成される。
Smartを有効にするために、このファイルに以下を追記

plugins: Module::Starter::PBP Module::Starter::Smart

モジュールを作ってみる

$ module-starter --module=My::UnyaUnya

ちなみに、あるやつにモジュール追加したいとき

$ module-starter --module=My::UnyaUnya2 --distro=My

できたら、ビルドできるかどうか、テストしてみる。

$ cd My-UnyaUnya
$ perl Build.PL
$ perl Build
$ perl Build test

これがうまくいかないときは、Test::Pod::Coverage、Test::Perl::Criticをインストールする。また、私の場合は.pmファイルの$VERSION = qv('0.0.3') を our $VERSION = qv('0.0.3')にする必要があった。

で、ここまで出来たら、後はがつがつモジュール書くだけ!

ビルドに成功したら、パッケージング

Build.PLのrequiresの項目に使っているモジュールを追加する。

requires=>{
   'Test::More' => 0,
   'version'    => 0,
   'Class::Accessor' => 0,
},

で、あとは、Makefile.PLの中身を変更

use lib qw(lib);
use Module::Build::Compat;
Module::Build::Compat->run_build_pl(args => \@ARGV);
Module::Build::Compat->write_makefile(build_class => 'Module::Build');

最後にMANIFEST.SKIPを作成

\bRCS\b
\bCVS\b
^MANIFEST\.
^Makefile$
^Build$
^Build.bat$
^_build/
\.(bak|tdy|old|tmp)$
~$
^blib/
^pm_to_blib
\.cvsignore
\.gz$

配布ファイル一覧を示すMANIFESTファイルを作成

$ perl Build manifest

準備が出来たら以下のコマンド

$ perl Makefile.PL
$ make
$ make test
$ make install

私はここで、インストールする場所を指定したいので、以下のコマンド

$ perl Makefile.PL PREFIX=/home/unya/Modules/

また、@INCにこの場所を参照させたい場合は、~/.bashrcに以下を追記

PERL5LIB=/home/unya/Modules/share/perl/5.8.4/;export PERL5LIB

パッケージング

$ perl Build dist