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