index @ar_1 @ar2 0 John London 1 Mike Paris 2 Vivien Milan 3 John Berlin 4 Vivien Paris etc... #### John => [London, Berlin], Mike => [Paris], Vivien => [Milan, Paris] #### use strict; use Data::Dump qw/dump/; my @ar_1 = qw/John Mike Vivien John Vivien/; my @ar_2 = qw/London Paris Milan Berlin Paris/; my %hash; foreach (0 .. $#ar_1) { push @{$hash{$ar_1[$_]}}, $ar_2[$_]; } print dump(\%hash);