9 package ValueContainer;
18 package Foo::Meta::Instance;
21 around get_slot_value => sub {
24 my ($instance, $slot_name) = @_;
25 my $value = $self->$orig(@_);
26 if ($value->isa('ValueContainer')) {
27 $value = $value->value;
32 around inline_get_slot_value => sub {
35 my $value = $self->$orig(@_);
37 . q[ my $value = ] . $value . q[;] . "\n"
38 . q[ if ($value->isa('ValueContainer')) {] . "\n"
39 . q[ $value = $value->value;] . "\n"
45 sub inline_get_is_lvalue { 0 }
51 Moose::Util::MetaRole::apply_metaroles(
54 instance => ['Foo::Meta::Instance'],
65 append_foo => 'append',
73 my $foo = Foo->new(foo => 'a');
75 $foo->append_foo('b');
80 my $foo = Foo->new(foo => '');
81 $foo->{foo} = ValueContainer->new(value => 'a');
83 $foo->append_foo('b');