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);