2011-01-27 79 views
2

如果你有一个哈希数组,其中的键代表列名和值是行内容什么是最好的方式来输出它作为perl中的表?Perl的哈希输出数组,如表

+1

你能提供一些样本输出吗? (提示:一旦你这样做了,你就可以用伪代码来识别你需要用你的哈希数组来做什么,然后你可以更好地提出一个关于你所拥有的部分的特定问题)。 – Ether 2011-01-27 18:11:11

回答

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

是否这样?

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); 
} 
+1

或者:`my%b = reverse%a`。 – 2011-01-27 22:25:13