Mouse(Moose)で使うMouseX::Types::Path::Classが素敵
今日はMouseX::Types::Path::Classって素敵ですねってはなし。
例えば、ログを吐くディレクトリを今まではこうやって用意してた。
package Sasakure; use Mouse; has 'dir' => ( is => 'ro', isa => 'Str', ); __PACKAGE__->meta->make_immutable; no Mouse; sub BUILD { my $self = shift; $self->{dir} = '/var/log/service'; return $self; } 1;
MouseX::Types::Path::Classを使う。
package Sasakure; use Mouse; use MouseX::Types::Path::Class; has 'dir' => ( is => 'ro', isa => 'Path::Class::Dir', coerce => 1, ); __PACKAGE__->meta->make_immutable; no Mouse; sub BUILD { my $self = shift; $self->{dir} = '/var/log/service'; return $self; } 1;
こうなって何が嬉しいって、渡した文字列(ディレクトリパス)が
Path::Class::Dirのオブジェクトとなってセットされる。
もちろんPath::Class::Fileも指定出来るよ。
素敵ですねーー♪
Path::Class::Dirの使い方はこちら