I have a small class, where I would like the variables to be read only
by external calls, but rw for internal access.
Why?
If there is a variable defined as lazy and ro, writing the value fails.
So it needs to be rw. Is there a recommended way of dealing with this
problem?
The other reason I have is that the class in question is instantiated
with a filename, and the filename must exist. If the file gets deleted
before the default for value is performed, I would like to get an error.
The easiest way that I found for that was to read and write the filename
value, forcing the isa FileExists. Is there a better way of doing this?
subtype 'FileExists'
=> as 'Str'
=> where { -e $_ };
has 'fileName' => (is => 'rw',
required => 1,
isa => 'FileExists',
) ;
has 'value' => (is => 'rw',
lazy => 1,
builder => 'value_builder',
) ;
sub value_builder {
my $my = shift ;
$my->fileName($my->fileName) ; # This forces the isa requirement
$my->value('123') ;
}
Peter