PerlのModule, Test, Mercurial
Menu Menu
Perlの関数
fib.plPerlのmodule を作る
man perlnewmod man perlnewmodlibを読もう。
Module::Starter CPAN package.を使えとか言ってくるが、cpan は遅いことが多い。ftp とかがあるとだめ。なので、
h2xs -AX --skip-exporter --use-new-tests -n Logic::Nodeが簡単。
何を作る?
Perl で論理式を計算するノードを作るライブラリを作ってみよう。
mkdir Perl cd Perl h2xs -AX --skip-exporter --use-new-tests -n Logic::Nodeすると、Logic-Node というdirectory が自動的に出来る。
% ls Changes MANIFEST Makefile.PL README lib/ t/などのファイルが自動的に作られる。
CPANを使う場合は、
% sudo /usr/bin/cpancpan[1]> install Module::Starter
% rehash % module-starter --module=Logic::Node --author="Shinji KONO" --email=kono@ie.u-ryukyu.ac.jp\nこんな感じ。結果は、同じ。
まず作るのは...
t/Logic-Node.tというテスト用のファイルが出来ているので、それを編集する。
my $node = Logic::Node->new(); ok( $node );の二行を t/Logic-Node.t に付け加えて、new の動作を調べよう。
lib/Logic/Node.pmを編集して、
sub new { my $self = shift; my $class = ref($self) || $self; return bless {}, $class; }という標準的なコンストラクタを作っておこう。
そして、テスト
perl Makefile.PL make make testとして、test をしてみる。
t/Logic-Node....ok All tests successful. Files=1, Tests=5, 0 wallclock secs ( 0.02 cusr + 0.01 csys = 0.03 CPU)などと出れば Ok。
変数ノードを作る
変数ノードは値を持つノードで、
setValue(value) valueのアクセサ(accessor)を持つ。
まず、テストを書こう
use Test::More tests => 5; BEGIN { use_ok('Logic::Node') ; use_ok('Logic::Node::Var') ; }; my $var = Logic::Node::Var->new(); ok( $var->setValue(1) ); ok( $var->value(1) == 1);等とする。
このテストが通れば良い。
lib/Logic/Node/Var.pmを作成しよう。(Node.pm をコピーして作るのが簡単)
package Logic::Node::Var; use base qw(Logic::Node); sub new { my $self = shift; my $class = ref($self) || $self; return bless {}, $class; } sub setValue { my ($self,$value) = @_; $self->{value} = $value; $self; } sub value { my ($self) = @_; $self->{value}; }という感じ。
MANIFEST を変更する
付け加えた lib/Logic/Node/Var.pm をMANIFESTに加える。こうしないと、これが package の一部だと言うことがわからない。
perl Makefile.PL make mate testという手順になる。
テストが通ったら
Mercurial で version 管理しよう。
hg init hg clone ../Perl ssh://kono@xxx.ie.u-ryukyu.ac.jp//Mercuiral-Repository/Perl以下にあります。
http://ie.u-ryukyu.ac.jp/hg/index.cgi/teacher/kono/software/ex/Perl/
問題2.1
EasyPackage
システムを構築する時に、その構築 Know How 自体をシステムとして残しておく。Mercurial の動かし方
Mercurial を installして、hg のpath が正しく通っているようにする。Server 側でも正しく path が通ってhg が動作することを確認する。
~/.hgrc に
[extensions] hgext.convert= [ui] username = Shinji KONO <kono@ie.u-ryukyu.ac.jp> ssh = ssh -Cなどと記述しよう。
repository は、提出課題毎に作り、
ssh://futenma.ie.u-ryukyu.ac.jp///net/home/hg/y08/e085702/kadai00等と言う形で記述する。Mercurial を課題毎に細かく分けないと、全部をcloneしてから、そこで探す羽目になってしまう。
http://ie.u-ryukyu.ac.jp/hg/からアクセス出来るので、そちらを直接参照する必要はありません。