2012-11-02 29 views
2

我有一個簡單的程序爲什麼打印命令在STDIN之後執行,雖然之前被調用過?

use strict; 
use warnings; 

print "Enter a number:\n"; 
my $number1 = <STDIN>; 
chomp $number1; 
print "Enter another number:\n"; 
my $number2 = <STDIN>; 
chomp $number2; 
if ($number2 == 0) { 
    print "error: cnt divide by zero\n"; 
} 
elsif (($number1 == 0) or ($number2 == 1)) { 
    print "$number1\n"; 
} 
else { 
    my $div = $number1/$number2; 
    print "the result is: $div\n"; 
} 

,但我不明白爲什麼打印(輸入號碼,然後輸入另一個號碼STDIN後顯示)。我得到下面的輸出

[612] perl test.pl 
2 
0 
Enter a number: 
Enter another number: 
error:cnt divide by zero 
+2

的開始[從緩衝患?](http://perl.plover.com/FAQs/Buffering.html) – mob

+0

不過,這是不尋常的標準輸出到交互式程序,其中輸出變爲被緩衝到終端。這是什麼操作系統? – mob

+0

@mob在Windows7專業,perl的V5.8.8 – learningMatlab

回答

1

$| = 1在程序

+2

這是對的,但爲什麼?至少顯示[perlvar](http://p3rl.org/perlvar)。 :) – memowe

+1

下次會做( - : – snoofkin

相關問題