geneA T1 geneA T1 geneA T2 geneB T8 geneC T10 geneC T1 #### NAMES T1 T2 T8 T10 geneA + + - - geneB - - + - geneC + - - + #### #!/usr/bin/perl-w use strict; use warnings; use List::MoreUtils qw(uniq); my %gene2TF2val = (); my @TF = (); while(<>){ chomp; my @s = split /\s+/,$_; push @TF , $s[1]; # pushing every TF into array @TF but this is still not unique list of transcription factors. $gene2TF2val{$s[1]}->{$s[0]} = "-"; } @TF = uniq @TF;