2014-03-12 43 views
0

我有这样的代码,我有问题,得到我想要的输出:的Perl - 打印输出后的一个for循环

print OUT1 "$first[0]\t$first[1]\t$first[2]\t"; 
for my $index1 (3..8) 
{ 
    my $ratio1 = sprintf("%.4f%s", $numerator/$denominator,"\t"); 
    #print OUT1 "$ratio1"; 
    $variable1 = "$ratio1"; # problem with this line 
} 

print OUT1 "$variable1"; # print to textfile 
print OUT1 "\n"; 

我试图打印输出后,运行完成for循环的6倍( 3至8)。这些数据应安排是这样的:

期望输出(例如):

 A B C 4 4 4 4 4 4 
     C D F 2 6 5 8 3 1 
     G H I 6 1 2 4 7 0 

相反,只打印出最后一栏

 A B C 4 
     C D F 1 
     G H I 0 

,所以我加入改变这一行“。”加入6列在一起

 $variable1 .= "$ratio1"; # problem with this line 

,我得到奇怪的输出是这样的:

 A B C 4 4 4 4 4 4 
     A B C 4 4 4 4 4 4 2 6 
     A B C 4 4 4 4 4 4 2 6 4 
     A B C 4 4 4 4 4 4 2 6 4 6 
     A B C 4 4 4 4 4 4 2 6 4 6 1 ... 

这有什么错我的代码什么地方?

+1

你为什么不只是在循环内打印'$比率'? – Barmar

回答

0

是的,你需要声明和你的for循环

print OUT1 "$first\t$second\t$third\t"; 
my $variable1 = ''; 
for my $index1 (3..8) 
{ 
    $variable1 .= sprintf("%.4f%s", $numerator/$denominator,"\t"); 
} 
print OUT1 "$variable1"; # print to textfile 

另外,您可避免临时缓冲区之前初始化$variable1,只是内部的打印for循环

+0

嗨,是的..我确实宣布和初始化我的$变量1之前,我的for循环实际上。 我想打印出for循环,因为我需要将$ variable1作为循环外的其他计算。为了检查输出是否正常,我打印出$ variable1。 :) – user3277702

+0

您需要将所有中间值保存在列表中供以后使用,并最终打印 –

+0

嗨,我该怎么做? – user3277702