my @genes = qw( Gene1 Gene2 Gene3 Gene4 Gene5 Gene6 ); my @raw_files = ( "Gene1 Gene2 Gene3", "Gene2 Gene3 Gene4", "Gene3 Gene4 Gene5", ); my @gene_in_files = map { my %content; @content{ split " ", $_ } = (); \%content; } @raw_files; my @gene_matrix = map { my $gene = $_; [ map { ~~exists $_->{$gene} } @gene_in_files ] } @genes; print "Gene", $_+1, " @{$gene_matrix[$_]}\n" for 0 .. $#gene_matrix;