我有一组哈希值,它们是具有相同数量元素的数组。它们彼此相互打印,但我想将它们彼此相邻打印。
在下面的输出中,以clakin_p,clkin_N和phy2clb_scan_out开头的列是不同的数组,它们是hash的diff值,它们应该是彼此相邻的。
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 :(得分:1)
您的语句print "$hash{$n}\n";
在结尾处包含换行符(\n
)。这会导致每个哈希值打印在单独的行上。只需删除换行符即可。
此外,Perl中很少需要传统的for
循环来跟踪迭代器,并且是代码中潜在的错误来源。更好的是:
foreach my $pin (@pin_names) {
foreach my $out (@output) {
if ( $pin eq $out ) {
print "$hash{$n} ";
}
}
}