sub merge { open(INFILE, "test.put"); my %data; while () { chomp; my ($key,@items) = split(/\*/); $data{$key}{$_}++ for @items; } close INFILE; print Dumper(\%data); }