読者です 読者をやめる 読者になる 読者になる

さわだのノート

書籍のお仕事に役立つかもしれない思いつきを記録しています。

RSS: 記事の更新情報 Rss Feed

いまさらMouseでモジュールを書く

以前、少しPythonを使ってみたのですが、文字列処理や適当な書き捨てスクリプトならやっぱりPerlのほうがいいなと感じました。でも、クラスを書くなら、Pythonのほうがぜんぜん楽です。

そこで、Perlオブジェクト指向プログラミングをサポートする、Mooseというモジュールを利用してみることにしました。

package PackageName;
use strict;
use warnings;
use feature qw/say switch/;
use utf8;
use Carp qw/confess croak/; # confessはスタックトレース付き

use Any::Moose;
has myouji => (is => 'rw');
has namae  => (is => 'rw');

no Any::Moose;

package main;
my $package = new PackageName(myouji => 'sawada', namae => 'takehiro');
say $package->myouji; # sawada
say $package->namae;  # takehiro

Mooseはアトリビュートが見やすいのがいいですね。newメソッドを自分で書く必要もありません。コンストラクタで何か処理させたい場合は、「BUILD」メソッドに定義しておくとよいようです。

コンストラクタに引数を渡すときは、ハッシュ(もしくはハッシュリファレンス)が原則となるようです。リストで渡したいときは、別途処理を自分で書かないといけません。ここが面倒ですね。

ただ、全体的にはスクリプトの見通しはよくなりました。コンストラクタの問題も、新しくスクリプトを書き起こすときに注意しておけばいいわけですしね。