2010-09-21 70 views
2

我有「人」的這樣一個Perl哈希:如何用Perl中的哈希鏈接創建一個簡單的HTML表格?

my $data = { 
    124535 => { 
     NAME  => "abe", 
     AGE  => 100, 
     SEX  => "m", 
     HOMEPAGE => qw (http://abe.knaan.old) 
    }, 
    54478 => { 
     NAME  => "joe", 
     AGE  => 18, 
     SEX  => "m", 
     HOMEPAGE => qw (http://slappy.joe.com) 
    }, 
    54478 => { 
     NAME  => "jane", 
     AGE  => 20, 
     SEX  => "f", 
     HOMEPAGE => qw (http://i.am.jane/jane.html) 
    }, 
}; 

我想每個人對所有的人的表格打印一個HTML頁面,一行,它的所有數據,包括散列鍵(即5列),包括超鏈接到它的主頁。

我可以編寫一段很長的醜陋代碼來打印所有的HTML頭文件等,但有沒有更好,更清晰的方法呢?也許爲此使用一些模塊,我猜是相當流行的任務?

我發現HTML::QuickTable但我不知道如何將我的結構轉換爲合適的結構。

+0

您是否嘗試過只是路過你的hashref到'render'功能HTML :: QuickTable? – 2010-09-21 08:45:34

回答

3

這應做到:

my @names = qw(NAME AGE SEX HOMEPAGE); 
my @data = [@names, 'KEY']; 

for my $k (keys %$data) { 
    my @t = @{$data->{$k}}{@names}; 
    $t[-1] = qq{<a href="$t[-1]">$t[-1]</a>};   
    push @data, [@t, $k] 
}   

use HTML::QuickTable; 
my $qt = HTML::QuickTable->new(... labels => 1); 
print $qt->render(\@data); 
+0

+1這是一個好的開始,但是hompepages仍然是文本,而不是鏈接。 – 2010-09-21 09:09:18

+0

@大衛:看到更新的答案 – 2010-09-21 09:16:55

+0

幾乎完美!但我們仍然缺少散列鍵(我們需要有5列) – 2010-09-21 09:28:56