Nice solution! We ran into this issue doing a header for a grid of open ports on network systems (input generated by nmap). Since we knew the max length of our input (5 digits for tcp ports), we use this solution:
sub numerically { $a <=> $b }; my @portsorted = sort numerically keys %ports; my @header; for (@portsorted) { my @portchars = split //, $_ . ' ' x (5 - length()); for ( 0 .. 4 ) { push @{$header[$_]}, $portchars[$_]; } } for (@header) { print "\t\t ", join('|',@{$_}), "\n"; } print "IPs\t\t ", '_|' x scalar(@portsorted), "\n"; __END__ outputs this (tabs notwithstanding): 2|8|1|1|4|4|9 2|0|1|3|4|4|3 | |1|9|3|5|8 | | | | | | | | | | | | IPs _|_|_|_|_|_|_|
Obviously yours has more appeal as a general solution, since we don't have options for alignment, spacing, or so forth.
In reply to Re: Print array vertically (in columns)
by bv
in thread Print array vertically (in columns)
by perlofwisdom
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |