#Main my @whole_world = (); my $misfits = {}; # the reference foreach my $individual (@whole_world) { ($ok_ones, $misfits) = find_misfits(\@whole_world, $misfits); } print_misfits($misfits); # sub sub find_misfits { my ($whole_world, $misfits) = @_; my %candidates = (); # do stuff to find the misfits, ie compare the genetic setup of individuals # add individuals that don't fit to $misfits $misfits{$stand}{$mother}{$offspring} = {%{$candidate{$stand}{$mother}{$offspring}}}; return ($misfits, some more structures); }