# instead of this (which should have "lazy" set as well): has 'Dbin' => ( is => 'rw', isa => 'Str', builder => '_build_Dbin', predicate => 'has_Dbin' ); sub _build_Dbin { my $self = shift; return $self->{Dbase}.'/apps/combinetools/combineprocessing'; } # consider this instead if you will never set the value of Dbin # in the constructor. Note the use of $self->Dbase and not $self->{Dbase}. sub Dbin { my $self = shift; return $self->Dbase.'/apps/combinetools/combineprocessing'; }