エンジニアブログ
Perl
Perlの勧め(1) Class::Accessor::Fastを使おう
2009年04月10日
onagataniです こんにちわ。
今回から数回に分けて自分のお勧めするモジュールを紹介したいと思います。
内容がモダンじゃない!と思う方もいるかもですが自分の好きなモジュールを紹介しますので最新の技術が知りたい方は見ないように...。
一回目は「Class::Accessor::Fast」です。
これはなにかというとPerlでアクセサを自動生成するモジュールです。
たとえば、下記のような場合にとても便利です。
MyClass.pm package MyClass; use strict; use warnings; sub new { my ($class, $args) = @_; my $self = { address => $args{address}, blog => $args{blog}, }; return bless $self, $class; } sub address { my ($self, $address) = @_; if ($address){ $self->{address} = $address; } return $self->{address}; } sub blog { my ($self, $blog) = @_; if ($blog){ $self->{blog} = $blog; } return $self->{blog}; } 1; __END__
これを
package MyClass; use strict; use warnings; use base qw/Class::Accessor::Fast/; __PACKAGE__->mk_accessors(qw/ address blog /); 1; __END__
このように書くことができます。
アクセサを自動生成するほかにnewメソッドも作ってくれるのでとっても便利。
(newはほとんどの場合オーバーライドすることになると思いますが)
使い方も一緒です。
#!/usr/bin/perl use strict; use warnings; use MyClass; use Perl6::Say; my $obj = MyClass->new({ address => 'tokyo', blog => 'wordpress', }); say $obj->address; say $obj->blog; $obj->address('obihiro'); $obj->blog('mt'); say $obj->address; say $obj->blog;
結果
perl test.pl
tokyo
wordpress
obihiro
mt
というわけでコードも短くなるし読みやすくなるのでお勧めします。