2013-08-21 28 views
0

我寫的第一個Perl程序是用貝葉斯定理演奏的一個小例程(下面)。它可以在cmd窗口和Linux上的Windows 8上運行,但是我最近在Win8機器上安裝了Cygwin,而cygwin中的行爲很奇怪。當我運行它時,不會顯示任何打印消息,但如果我輸入三個數字,然後按「Enter」鍵,它將響應所有三個打印以及printf。在Cygwin下運行Perl程序時如何修復打印語句的時間?

use strict; 
use warnings; 
print "What was the previous estimate that the hypothesis is true?\n"; 
my $x = <STDIN>; 
chomp $x; 
$x *= .01; 
print "What is the probability of the event if the hypothesis is true?\n"; 
my $y = <STDIN>; 
chomp ($y); 
$y *= .01; 
print "What is the probability of the event if the hypothesis is false?\n"; 
my $z = <STDIN>; 
chomp ($z); 
$z *= .01; 
my $bayes = 100 * ($x * $y)/(($x * $y) + $z * (1 - $x)); 
printf "Posterior probability is %3.2f%%\n", $bayes; 

回答

4

這是一個緩衝問題。標準輸出設置爲無緩衝:

$| = 1 

另外,如果你在一個CMD窗口中運行Cygwin的有可能是Cygwin和CMD干擾,以及之間的相互作用。嘗試在薄荷窗口中運行。

+0

問題在於Cygwin安裝。我做了你的改變,現在得到一個不同的錯誤: –

+0

我正在運行Cygwin自己的shell。 Cygwin安裝可能會出現問題。我做了你的改變,現在得到一個錯誤信息,說cygssp-0.dll沒有找到。關於網絡上可用的錯誤有很多信息,所以我應該能夠找到解決方案。 –

+0

在這種情況下,我會徹底刪除並重新安裝Cygwin。假設你有一個相當快的互聯網連接,這並不需要那麼長時間。 –