class Hamper { has $.name = 'Christmas Basket'; has Str @!items; method TWEAK(){ self.items = 'Mince Pie', 'White Wine', 'Stinky Cheese' unless @!items; } method items() is rw { return-rw Proxy.new: FETCH => sub ($) { return @!items }, STORE => sub ($, @items) { die "Wrong length" unless @items.elems == 3; @!items = @items; }; } } my $hamper = Hamper.new; # $hamper.items = 'Mince Pie', 'White Wine', 'Stinky Cheese', 'Dogfood'; say "Name: " ~ $hamper.name; say "Items: " ~ $hamper.items;