这肯定是一个非常简单的问题,但我仍在学习并没有找到答案。
需要检查 Moose 对象构造函数提供的(必需的)参数的有效性,例如下一个示例:
use 5.016;
use warnings;
package My {
use Moose;
has 'mydir' => (
is => 'ro',
isa => 'Str',
required => 1,
);
}
use File::Path qw(remove_tree);
package main {
my @dirs = qw(./d1 ./d2);
#ensure no one dir exists
remove_tree($_) for ( @dirs );
#create the first dir
mkdir $dirs[0] or die;
foreach my $dir( @dirs ) {
my $m = My->new( mydir=>$dir );
say "$dir ", defined($m) ? "" : "NOT", " ok";
}
}
问题是:我应该在My
包中添加什么以确保仅在提供的路径存在时才创建My
对象?所以某处需要添加测试。mydir
if -d ...
如何定义mydir
具有有效性检查的属性?
主程序的想要的结果:
./d1 ok
./d2 NOT ok