use Data::Dumper; @ar=([1,1],[1,2],[3,5],[6,7]); map {test($_->[0],$_->[1])} @ar; sub test { my ($k,$val)=@_; if (exists $hash{$k}) { $hash{$k} .= ','.$val ; } else { $hash{$k}=$val; } } print Dumper(\%hash); #### $VAR1 = { '6' => 7, '1' => '1,2', '3' => 5 };