use Text::Table; my @cols = keys %$matrix; my $tb = Text::Table->new(@cols); for my $subject (keys %seen_subjects) { my @vals; for my $query {@cols) { push(@vals, $matrix->{$query}->{$subject}); } $tb->load( [ @vals ] ); }