2015-05-15 22 views
-1

我是一名Perl初學者,學習使用數組和散列。通過我所做的研究,我創建了一個數組,其中包含一個哈希列的鍵和值。我不知道如何水平放置標題並在8個標題中的每一個下面放置行。任何幫助都非常感激。如何在Perl中使用8個標題/列和20行創建一個哈希數組使用for循環

#!/usr/bin/perl 
# use strict; 
use warnings; 
# use 5.010; 
use Data::Dumper; 

my %Name = (
    Component => 2.2 
); 

foreach my $name (keys %Name) { 
    printf "%-8s %s\n", $name, $Name{$name}; 
} 

但這就是我想要在控制檯中打印:標題(8)和最後一個標題爲空。

Type   Name        Rev Id  ZZZ ID IP  Group  Date Released AA Category Project IDs 
xxxxxComponent xyz_abc_1234LDO_c7rp1avrusevrmdtop xxxx_2_5 99ccccc1  ABC- RIP-xxxxx 2015-05-03 6:59:09 xxxx  
xxxxxComponent xyz_abc_1234LDO_c7rp1avrusevrmdtop xxxx_2_5 99ccccc1 ABC RIP xxxxx 2015-05-03 6:59:09 xxxx 
xxxxxComponent xyz_abc_1234LDO_c7rp1avrusevrmdtop xxxx_2_5 99ccccc1 ABC RIP xxxxx 2015-05-03 6:59:09 xxxx  
+1

再你用一個元素創建了一個散列。而已。您如何期望打印您實際上沒有的數據?首先解決它。 – ikegami

+0

你的程序使用一個名爲'Component'的鍵來定義一個_hash_。但是,您現在會打印此'%Name'哈希的整行,而不是其中一個鍵等於'2.2'。所有數據都來自哪裏? '%Name'包含這些數據嗎?你怎麼把這個數據放在'%Name'中?如果沒有更好的理解你的數據和你的程序,我們無法幫助你。 –

回答

0

首先,您需要構建一個記錄數組,其中數組中的每個項目都是散列引用。然後你可以循環瀏覽它們。

下面是一個簡單的例子:

use strict; 
use warnings; 

my @records = 
({ "Type" => "Type A", 
    "Name" => "Name A", 
    "Group" => 1 }, 

    { "Type" => "Type B", 
    "Name" => "Name B", 
    "Group" => 2 }, 

{ "Type" => "Type C", 
    "Name" => "Name C", 
    "Group" => 2 }, 
); 

printf "%-8s %-8s %-2s\n", 
    "Type", 
    "Name", 
    "Group"; 

for my $record (@records) { 
    printf "%-8s %-8s %-2s\n", 
    $record->{Type}, 
    $record->{Name}, 
    $record->{Group} 
} 

它打印:「我創建的陣列>有用於所述散列列中的一鍵和值」

Type  Name  Group 
Type A Name A 1 
Type B Name B 2 
Type C Name C 2 
+0

#感謝您凱文,您的格式對我理解數組,密鑰,值,散列和for循環非常有幫助。我想使用下面的代碼顯示我的輸出在控制檯中: – rjl

+0

我試着用8個列名和20個不同的行執行這段代碼。我有一些與對齊有關的問題。我嘗試調整「%-8s%-8s%-2s%-8s%-8s%-8s%-8s%-8s \ n」有沒有更好的方法可以做到這一點?如使用散列引用來讀取formattd txt文件並以對齊的方式在控制檯中顯示txt文件或使用模塊? – rjl

+0

我對安裝任何Perl模塊並不是很熟悉。無論如何,我可以通過在線IDE執行它來檢查結果嗎? – rjl

相關問題