use warnings; use strict; my %data = (); my $string = 'flinstones,fred,barney,willma,betty'; my @tmp = split(/\s*,\s*/, $string); my $key = shift @tmp; push @{$data{$key}}, [@tmp]; use Data::Dumper; print Dumper(%data);