{ name => { stage0 => [old, new], ..., stageN => [old, new], }, ..., } #### #!/usr/bin/env perl use strict; use warnings; my %data = ( tony => { skill => [ 1, 1 ], skill1 => [ 0, 0 ], }, martin => { skill => [ 1, 0 ], }, ); print qq{\n}; print "\n"; for my $name (sort keys %data) { print "\n"; my $rowspan = keys %{$data{$name}}; print qq{ \n}; for my $stage (sort keys %{$data{$name}}) { print " \n"; for (@{$data{$name}{$stage}}) { my $bool = $_ ? 'True' : 'False'; print " \n"; } --$rowspan && print "\n\n"; } print "\n"; } print "
Name Stage Old New
\u$name$stage$bool
\n"; ##
##
Name Stage Old New
Martin skill True False
Tony skill True True
skill1 False False