First note to self: use Clone qw(clone); is very handy when you need to make a deep copy.
Second note to self: A singleton object is very handy when you need to guarantee distribution of only one copy of an object.
Third note to self: my $child = clone($agent); is very unhandy when an agent slot contains the aforementioned singleton object.
A friend of mine used to work in Oracle's support department. A DBA called her to complain that Oracle was throwing a strange error when he was trying to select some records. She asked what the output was when he typed in SELECT * FROM foo. After much frustration, she had the DBA email her the exact text of the SQL statement she was having him type in. The "DBA" responded with:
SELECT STAR FROM foo
Fourth note to self: when working with plants, herbivores, and carnivore simulated agents, do not get lazy and refer to herbivores as $herbs. I had cattle trying to eat other cattle ($herbs) and couldn't figure out why they weren't.