Provding defaults
- if default is a ref, always wrap it in a sub{ ... }
- consider:
has array => default => []; # ARRAY(0x123456) my $class = Class->new; $class->array; # ARRAY(0x1234567) my $class2 = Class->new; $class2->array; # ARRAY(0x1234567) $class->array->[0] = 42; $class2->array->[0] # now it's 42!
- this is never what you want, so Moose dies if you try to do this
sub mk_array { [] };
mk_array; # ARRAY(0x1234567)
mk_array; # ARRAY(0x6543210)