in reply to Moose and BUILD and 'ro' attributes

The first contains initialization data (from a config-file), the second is build from this data, let's say a pathname.

If it's built from the data, why have an attribute for it? Is it a very expensive calculation?

Reading Moose::Manual::Construction it seems that you could write a BUILDARGS sub that generates the second attribute based on the first one. Then Moose's internal mechanisms set the ro attributes, you don't have to do it.

Finally, in my limited understanding "ro" just means that no public accessor for changing the object is created - you can still change it through $self->{yourattribute} = $new_value inside the class.