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