I'd like to set delegated attributes in my object constructors (e.g. as below) but this doesn't seem to work. Am I missing something?
Merlyn #!/usr/bin/perl package SubClass; use Moose; has thing => ( is => 'rw', isa => 'Int' ); before thing => sub { shift; print "subthing: ", @_ ? 'set to ' . (shift // '<undef>') : '(read)', "\n"; return; }; package Class; use Moose; has sub_object => ( is => 'rw', isa => 'SubClass', handles => ['thing'], builder => '_build_sub_object' ); #has sub_object => ( is => 'rw', isa => 'SubClass', handles => ['thing'], default => sub { _build_sub_object(); } ); sub _build_sub_object { my $self = shift; print "_build_sub_object\n"; return SubClass->new; } package main; use strict; use warnings; print "Start\n"; my $object = Class->new(thing => 1); print "Built\n"; print "Thing 1 = ", ($object->thing // '<undef>'), "\n"; $object->thing(2); print "Thing 2 = ", ($object->thing // '<undef>'), "\n"; -- -- Merlyn