如果你有一个哈希数组,其中键代表列名,值是行内容,那么将它作为perl中的表输出的最佳方法是什么?
答案 0 :(得分:2)
每行是否都有相同的哈希键?那就是你会得到的结构,例如来自DBI,对应于通常理解的表的属性(即每行具有相同的列集)。这是我想到的一个例子,我希望它符合你的想法:
my @AoH = (
{id => 1, name => 'Dick'},
{id => 2, name => 'Jane'},
);
在这种情况下,您通常知道列是什么。我要做出这个假设。那么,这就是代码:
my @cols = qw(id name);
my @AoH; # as above
# print the column headings
print join "\t", @cols;
# print values for each row using a hash slice
for my $row_ref (@AoH) {
print join "\t", @$row_ref{@cols};
}
答案 1 :(得分:1)
喜欢这个吗?
my @AoH = (
{a => 1, b => 2},
{c => 3, d => 4},
);
这映射到N维表,其中N是数组中元素的数量。你不能真正想象它超过N = 3,除非你折叠哈希(即,使它成为一个大哈希。)
如果您只是将“反向”哈希表制成表格,只需转置它:
my %a = (a => 1, b => 1);
my %b = map { $a{$_} => $_ } keys %a;
while ( my ($k, $v) = each %b ) {
printf( "%s %s\n", $k, $v );
}