sub test { my (@names_all, @email_all); my @names = qw(Joe mary ann pete amy jerry Joe ann John John ); my @email = qw(joe@test.com mary@test.com ann@nowhere.com pete@here.com amy@ok.com jerry@b.com joe@test.com ann@nowhere.com John@test.com John@ok.com); my %emails; my @names_combined = (@names,@names_all); my @emails_combined = (@email,@email_all); for my $name ( @names_combined ) { push @{$emails{$name}}, shift(@emails_combined); } return \%emails; }