#! perl use strict; use warnings; use Data::Dump; my %dedicated; while (my $line = ) { chomp $line; my ($key, $values) = split ' ', $line; push @{ $dedicated{$key} }, $_ for split ',', $values; } dd \%dedicated; __DATA__ names1 john,bob,stu names2 mike,john,bob names3 blah