in reply to Extracting data from CSV file + Extracting selected few lines through perl

I haven't taken the time to absorb your dense spec, but I think reading all your data into a hash-of-arrays might help. I also show how to find the uniq types.
my %data; while (<DATA>) { chomp; my ($k, $v) = split /,\s+/; push @{ $data{$k} }, $v; } for my $contig (sort keys %data) { my %uniq = map { $_ => 1 } map { s/_.*//; $_ } @{ $data{$contig} } +; print "$contig = "; print join ' ', sort keys %uniq; print "\n"; } __DATA__ contig_8, maxima_contig_63500 contig_8, orange_scaffold_0026 contig_8, clementine_scaffold_6 contig_8, ponkan_scaffold_27456 contig_8, medica_contig_12945 contig_8, maxima_contig_235908 contig_8, ponkan_scaffold_144138 contig_9, maxima_contig_63500 contig_9, orange_scaffold_0026 contig_9, clementine_scaffold_6 contig_9, ponkan_scaffold_27456 contig_9, medica_contig_12945 contig_9, maxima_contig_235908 contig_9, ponkan_scaffold_144138 contig_9, ponkan_scaffold_144138

output:

contig_8 = clementine maxima medica orange ponkan contig_9 = clementine maxima medica orange ponkan