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/cpan
cpan[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/
からアクセス出来るので、そちらを直接参照する必要はありません。