If each row of output is built from data in multiple keys of the hash (per your test code), then I don't think you have any choice but to roll your own code that traverses everything and builds up the output.
If you've got arbitrarily many keys in %hash, then you'll likely want something like this:
use strict; use warnings; my %hash; $hash{col1} = [qw(a b c d e)]; $hash{col2} = [qw(1 2 3 4 5)]; $hash{col3} = [qw(q r s t u)]; # Change this so that the keys of %hash # show up in the order you want them, # in the output. my @keys = sort keys %hash; # Assumes every key of %hash is an # arrayref with the same number of # elements in it. Also note that # this code destroys %hash, as # it goes along. If you don't want # that, make a copy first. print join(",", @keys), "\n"; my $ref_key = $keys[0]; while (@{ $hash{$ref_key} }) { my @line; for my $key (@keys) { push @line, shift(@{ $hash{$key} }); } print join(",", @line), "\n"; }
In reply to Re^2: printing columns of data
by klassa
in thread printing columns of data
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |