11 月 08 日(Sat)のアレゲメモ

(貧乏な人のための)Perl モジュールの作り方。

ぼくがお金がなくてラクダ本を買えなかった時に、 こんな情報があればいいなぁと思っていた内容をまとめてみます。 なので、出来るだけフリーのドキュメントを見て内容を確認できるようにしたいと思います。


ちなみに、こちらで動作を確認している Perl のバージョンは 5.6.1 なので、 ドキュメントなどもそのバージョンのものをリンクするようにします。

パッケージ、クラス、モジュール

具体的なクラスの作り方やオブジェクト指向プログラミングの方法などは、 「perltoot - トムによるPerlオブジェクト指向チュートリアル」を何度も読めばわかると思います。

っていうか、ぼくもそれしか読んでないんです。 ごめんなさい。

以下は、そこに書いてある方法で書いた Perl モジュールを、 配布できる形にパッケージングするためのやり方です。

h2xs

モジュールを作るには、まず h2xs というおまじないを使います。

たとえば Haruasme という名前のモジュールを作りたいとすると、 こう書きます。

> h2xs -X -A Harusame

そうすると Harusame という名前のディレクトリが作られて、 そのなかに Changes、Harusame.pm、MANIFEST、Makefile.PL、README、test.pl という 6 つのファイルが作られます。

で、自分で書き直す必要があるのは MANIFEST と test.pl、 それにモジュール本体である Harusame.pm です。

以下でそれらを見ていきましょう。

追加のファイル

Harusame.pm というひとつのファイルの中にモジュールのすべてが書けるならそれでいいですが、 複数のファイルに分けて書く必要がある場合もあります。 ここでは、Harusame/Cracker.pm というモジュールファイルもセットに入れたいとします。

その場合は、まず lib というディレクトリを作って、 その中にさらに Harusame というディレクトリを作り、 そこに Cracker.pm というファイルをおきます。

それで、 さっき自動的に作られた MANIFEST ファイルに、 lib/Harusame/Cracker.pm という行を加えればいいみたいです。

MANIFEST ファイルを修正しなくても make とかは出来るみたいなんですが、 配布パッケージを作るときにちゃんとファイルをアーカイブに含めてくれません。

この MANIFEST の更新をいちいち手でやるのも面倒なので、 これを自動化するやりかたもあります。 詳しくは、ExtUtils::MakeMaker - Distribution Support と、 ExtUtils::Manifest - MANIFEST.SKIP を参照してください。

テスト

h2xs は自動的に test.pl というファイルを作ってくれるので、 この中にテストスクリプトを書くことができます。 テストスクリプトの書き方は Test を見てください。

テストスクリプトは、「ok」と「not ok」という 2 種類の出力をしさえすれば何を使ってもいいので、 Test モジュールよりも簡単な Test::Simple というのを使ってもいいみたいです。 分かりやすい説明が Test::Tutorial にありますので、 参考にしてください。

さて、テストスクリプトを書いて

> make test

とやると、自動的にテストをしてくれます。

テストスクリプトが短ければひとつのファイルで間に合うんですが、 ある程度量が多くなるとスクリプトを分割したくなります。 多くの CPAN のモジュールのように、 t/*.t というファイルにテストスクリプトを書くには、 単に test.pl と同じような内容のテストスクリプトを t/*.t に書けばいいだけです。

すると、make test の時に自動的に t/*.t ファイルの内容が実行され、 一般的な CPAN モジュールのテストのようなきれいにまとまった出力が得られます。 この辺の詳細は、 ExtUtils::MakeMaker - make test を見てください。

なお、test.pl が不要になったなら削除してもかまいません。

test.pl を削除して t/*.t を追加したことを、 MANIFEST ファイルにも反映させておきましょう。

配布アーカイブを作る

まぁ、だれもほしがる人はいないかもしれませんが、 自分で作ったモジュールを複数のサーバにインストールする必要があるときにも、 配布アーカイブをつくると便利です。

> make dist

とやると、MANIFEST に書いてあるファイルがアーカイブに含められて、 めでたく Harusame-0.01.tar.gz というファイルができます。

参考ドキュメント

とりあえず一通り読んでおくとよいと思うドキュメントです。

モジュールの作り方

「2000/11 に京都国際会館で行われた Perl Conference Japan 2000 での講演スライド」 だそうです。 Perl モジュールを作る手順の概要が分かります。

perltoot - トムによるPerlオブジェクト指向チュートリアル

Perl のオブジェクト指向プログラミング入門です。 クラスの作り方から、クラスデータや継承などについて分かりやすく書いてあります。

ExtUtils::MakeMaker

h2xs が吐き出すファイルのはたらきなどはこっちに書いてあります。

Test::Tutorial

Perl におけるテストの方法が、読者のレベルの段階を追って書いてあります。

Comments

最終更新: 2003 年 11 月 08 日 18:46