2014-07-08 32 views
0

我有一個for循環,它從用戶處獲取一個值並對其進行比較並根據輸入打印結果。然而下一次迭代開始它的打印語句之前,如果前一個已經打印出輸入的解釋結果:Perl forloop在打印完成之前仍在繼續

for $count (0 .. $group_count) { 
    my $group_name = groups[$count]; 
    my $answer = prompt "\nWould you like to add $user to group $group_name? [y/n]"; 
    if($answer eq 'y') { 
     print "successful"; 
    } 
} 

所以一旦我按下回車鍵後,提示下一個"Would you like to add ..."出現再後來"successful"被打印,有沒有辦法阻止迭代,直到打印完成?

+0

用'$ groups [$ count]' – fugu

+2

'替換'groups [$ count]''使用警告;嚴格使用;'是你的朋友。 – TLP

+0

我有警告和嚴格啓用,我不認爲它的錯誤或警告,因爲這樣的正義代碼被執行的順序錯誤,真的,我需要打印func阻止從繼續到打印已完成的迭代 – user3778934

回答

2

既然你沒有回覆,我將不得不猜測你的問題是什麼。我的猜測是你看到類似的東西:

Would you like to add foo to group A? [y/n] 
$ y 
# nothing happens 
successful 
Would you like to add bar to group B? [y/n] 

這是因爲print打印時使用緩衝。當你打印一些不包含換行符\n的東西時,只需將它添加到緩衝區中,但不能立即打印。所以,如果你想看到它打印出來,只需添加一個新行:

print "Successful\n"; 

從技術上講,你也可以用標準輸出緩衝器通過$|亂動,但我認爲這是矯枉過正在這種情況下。

相關問題