モジュールをつくってみる

http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/?P=2&ST=develop
を参考にした自分用のメモ。必要なものはcpanでインストールしておく。

モジュールとテストをつくる

必要なコマンド

$cd /home/user/workspace
$module-starter --module=My::Module
$ cd My-Module
$ perl Build.PL
$ perl Build

以降は
1. テストコード作成
2. モジュール実装
3. テスト実行
を繰り返す。

モジュールの雛形(サブルーチンのエクスポート)
package My::Util;
use warnings;
use strict;
use Carp;
#バージョン定義
use version; our $VERSION = qv('0.0.3');

#サブルーチンsumをエクスポート
use Exporter; our @EXPORT = qw(sum);
use base qw(Exporter);

#サブルーチンsumの定義
sub sum {
  my $sum = 0;
  foreach (@_) {
    $sum += $_ if (defined($_) and ($_ != 0));
  }
  return $sum;
}

#コードの終わりに1を
1;
モジュールの雛形(OOP
package My::Person;
use warnings;
use strict;
use Carp;
use version; our $VERSION = qv('0.0.3');

#アクセサ定義
use base qw(Class::Accessor::Fast);
__PACKAGE__->mk_accessors(qw(name age));

#メソッド定義
sub sayHello {
  my $self = shift;
  print "";
}

#コードの終わりに1を
1;

パッケージング

Makefile

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');

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

MANIFEST.SKIP

不要なものを含めないために、以下の内容でMANIFEST.SKIPを作成するとよいとのこと。

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

$ perl Build manifest
マニフェストファイルが更新される。


$ perl Build dist
でパッケージ完了。