for my $k (sort { $hash{$a}->[0] <=> $hash{$b}->[0] or $a cmp $b } keys %hash) { my @arr = grep { defined $_ } @{ $hash{$k} }; if (@arr) { printf "%-25s : %-80s\n", $k, "@arr"; } }