MooseX::Types::Path::Classが地味に便利
何かしらのパスをオブジェクトに持たせる事は往々にしてある。
でそのオブジェクトがMooseで実装されているのであればMooseX::Types::Path::Classを使うのが地味にすんげー便利。
package MyObject; use Moose; use MooseX::Types::Path::Class qw{File Dir}; has file_path => ( is => 'rw', isa => File, coerce => 1, ); has dir_path => ( is => 'rw', isa => Dir, coerce => 1, ); my $obj = MyObject->new( file_path => '/foo/bar.yaml', dir_path => '/foo/baz/', ); print ref $obj->file_path; # Path::Class::File print ref $obj->dir_path; # Path::Class::Dir
と、このようにパス文字列渡すだけでPath::Classのオブジェクトになってくれる。
ちなみにFileやDir等の名前空間の汚染がイヤなら
use MooseX::Types::Path::Class; has file_path => ( is => 'rw', isa => 'Path::Class::File', coerce => 1, );
でも良い。