open FH, "$data" or die "Can't open $data: $!"; flock (FH, 1) or die "Can't lock $data for reading: $!"; foreach my $line () { (undef,undef,undef,$email,$phone,$partners,$memberno) = split "\t", $line; my @partnerssplit = split / /, $partners; $partners{$memberno} = \@partnerssplit; } close FH; print Dumper( \%partners); #### $VAR1 = { 'fr065603' => [ 'fr065600' ], 'fr065601' => [ 'fr065600', 'fr065602' ], 'fr065604' => [ 'fr065600' ], 'fr065600' => [ 'fr065601', 'fr065602' ], 'fr065602' => [ 'fr065604', 'fr065603' ] }; #### } elsif ($level == 2) { foreach my $item (@{$partners{$base}}) { if (exists $partners{$item}) { push @allmembers1, $item, @{$partners{$item}}; foreach $item1(@allmembers1) { if (exists $partners{$item1}) { push @allmembers, $item1, @{$partners{$item1}}; } } } }