in reply to Building a List

You can try this data structure, it implements a directional map in a OO style:

Referals.pm package Referals; use Data::Dumper; use strict; sub new { shift; my $self = {}; $self->{NAME} = shift; $self->{REFERALS} = []; bless $self; return $self; } sub add_referal { my $self = shift; push @{$self->{REFERALS}}, shift; } sub display { my $self = shift; print "Name: $self->{NAME}\nReferals:\n"; print Dumper $self->{REFERALS}; } 1; Referals.pl: use Referals; my $Bob = new Referals("Bob"); my $Joe = new Referals("Joe"); my $Jack = new Referals("Jack"); my $Henry = new Referals("Henry"); my $Gabe = new Referals("Gabe"); my $Pete = new Referals("Pete"); my $Tim = new Referals("Tim"); $Jack->add_referal($Bob); $Bob->add_referal($Joe); $Joe->add_referal($Henry); $Jack->add_referal($Gabe); $Gabe->add_referal($Pete); $Gabe->add_referal($Tim); $Jack->display;