my @keys= sort keys %TOP; my $format= join( " ", ("%-19s") x @keys ) . "\n"; printf $format, @keys; printf $format, map { "=" x length($_) } @keys; my $line= 0; while( grep { $line <= $#{$TOP{$_}} } @keys ) { printf $format, map { def($TOP{$_}[$line]) } @keys; $line++; } sub def { return defined $_[0] ? $_[0] : def($_[1],""); }