Perl输出哈希数组作为表

时间:2011-01-27 17:38:25

标签: arrays perl hash

如果你有一个哈希数组,其中键代表列名,值是行内容,那么将它作为perl中的表输出的最佳方法是什么?

2 个答案:

答案 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 );
}