use strict; use warnings; use Data::Dumper; my %hash = map { $_->[0] => join q{,}, @$_[1, 2] } map { chomp; [ split m{\s*,\s*} ] } ; print Dumper \%hash; __END__ A, B, C D,E,F G, H,I