2011-01-27 78 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