note moritz <blockquote> <code> has 'verlet' => ( is =>'rw', isa
=> 'ArrayRef[Molecule::Atom]', required => 1, weak_ref => 1,
default => sub { [] }, ); </code> </blockquote> <p>I'm pretty
sure the <c>weak_ref => 1</c> is wrong, because you don't keep
another reference to the array. So when method add_verlet exits,
the array reference is garbage-collected, and on the next call
replaced by the default value.</p> <p>So, remove the <c>weak_ref
=> 1</c>.</p> <p>Once your object is destroyed, the array will
also be destroyed. Since you <c>weaken()</c> the objects inside
the array, they will go away as soon as your external references
to them go away.</p> <blockquote>so I see that the actual
question is how I said to perl that I do not want to destroy the
objects stored in the array? </blockquote> <p>You don't have to
do anything special. Remove all the weaken and weak_ref stuff.
(You only need that if your object graph contains circles). The
objects only go away once all references to them are gone, so
usually you