package Test; use Moose; my $prepend = '/some_string/'; has 'fname' => (is => 'rw', isa => 'Str'); has 'appended' => ( is => 'rw', isa => 'Str', # lazy => 1, #builder => 'set_appended' ); 1; sub BUILDARGS { my $class = shift; my %args = ref $_[0] ? %{$_[0]} : @_; $args{appended} = $prepend . $args{appended} if exists $args{appended}; return \%args; } sub set_appended { my $self = shift; my $value = $self->appended; return $prepend . $value; } #### use 5.010; use strict; use warnings; use lib "."; use Test; my $t = new Test( fname => "fred", appended => "this_is_appended_string"); say $t->fname; say $t->appended; $t->appended ('another_string'); say $t->appended; #### fred /some_string/this_is_appended_string another_string