http://shanon-tech.blogspot.jp/2013/05/perl.html
Perl モジュールの作り方、2013年においては Authoring tool をつかって作るのがよいです。具体的には Minilla でつくるのがオススメであります。
perlbrew なり plenv なりで perl をいれたあとは、
% cpanm Minilla
として Minilla をインストールします。
% minil new Foo
とすると、Foo.pm のスケルトンができあがります。作者の名前などは ~/.gitconfig などから自動的にさがしてきますので、設定不要です。
できあがったディレクトリは以下のような形になっています。
Foo
├── Build.PL
├── Changes
├── cpanfile
├── lib
│ └── Foo.pm
├── LICENSE
├── META.json
├── README.md
└── t
└── 00_compile.t
2 directories, 8 files
Build.PL は、Minilla が自動生成したファイルです。Rakefile とか Makefile とか、setup.py とか、Makefile.PL とか、そういったものに相当するファイルですね。直接編集することはありません。
META.json は、モジュールのメタデータがはいっているファイルです。cpanfile, lib/Foo.pm からモジュールの情報をかきあつめて、Machine readable なフォーマットとして出力したものです。自動生成可能なのですが、リポジトリにふくめておくと、cpanm でリポジトリから直接インストールできて便利です。基本的にはリポジトリにいれるようにしてください。
RAEDME.md は、lib/Foo.pm から自動生成されます。これは github での見栄えをよくする効果があります。github のためだけに存在するファイルであるといってもさしつかえありません。。
t/ ディレクトリはテストスクリプトを配置するディレクトリです。どんどん配置していってください。
LICENSE ファイルは、ライセンス情報がはいっているファイルです。minil new はデフォルトで Perl5 とおなじ Artistic License で LICENSE ファイルをつくります。
Changes ファイルは、モジュールの変更履歴を記述するファイルです。「リリースされる tar ball には s/{{$NEXT}}/$version $date/ したものがはいって元の changes には s/{{$NEXT}}/ {{$NEXT}}\n\n$version $date/ したものがはいる」という挙動をするのがちょっとわかりづらいところではありあます。。
% minil test とすると、テストスイートがうごきます。
% prove -rl t/ などとしても、シンプルな pure perl のモジュールの場合には問題ありません。
% cpanm . でインストールできます。
% minil dist で、カレントディレクトリに tar ball ができます。
CPAN にあげたい場合には、minil release
とうてば OK です。いろいろメッセージがでてきますので、その通りにやればいいです。