2014-10-05 150 views
-1

我有一組哈希值是具有相同數量的元素的數組。它們正在彼此下面打印,但我想將它們打印在一起。打印哈希值

在下面的輸出中,以clakin_p,clkin_N和phy2clb_scan_out開頭的列是不同的數組,它們是散列值,它們應該彼此相鄰。

for (my $m = 0; $m <= ($#pin_names); $m++) { 
    for (my $n = 0; $n <= ($#output); $n++) { 
     if ($pin_names[$m] eq $output[$n]) { 
      print "$hash{$n}\n"; 
     } 
    } 
} 

電流輸出: -

clkin_P 
     1 
     1 
    clkin_N 
     0 
     0 
    phy2clb_scan_out 
     H 
     H 
+0

你有沒有嘗試過其他技術? – 2014-10-05 21:51:24

+0

你可以根據上面的代碼建議一些東西,我可以改變一些東西嗎? – 2014-10-05 21:53:29

+0

那麼,你正在打印'$ hash {$ n}'然後換行。如果您希望這些值彼此相鄰打印,請不要使用換行符。 – 2014-10-05 21:56:00

回答

1

你的聲明print "$hash{$n}\n";包括在末端(\n)一個換行符。這會導致每個散列值被打印在一個單獨的行上。只需刪除換行符。

此外,在Perl中很少需要傳統的for循環,您可以在其中跟蹤迭代器,並且可能會導致代碼中出現錯誤。更好的是這樣的:

foreach my $pin (@pin_names) { 
    foreach my $out (@output) { 
     if ($pin eq $out) { 
      print "$hash{$n} "; 
     } 
    } 
}