いまさら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」メソッドに定義しておくとよいようです。
コンストラクタに引数を渡すときは、ハッシュ(もしくはハッシュリファレンス)が原則となるようです。リストで渡したいときは、別途処理を自分で書かないといけません。ここが面倒ですね。
ただ、全体的にはスクリプトの見通しはよくなりました。コンストラクタの問題も、新しくスクリプトを書き起こすときに注意しておけばいいわけですしね。