2017-06-29 56 views
-3

學習perl我發現在這種情況下CTRL + D不能停止用戶輸入。它在其他腳本中的工作可能是通過代碼本身來實現的。PERL CTRL-D沒有停止用戶輸入

我正在網上閱讀有關EOF,但任何東西似乎都適合我。

非常感謝您的提前和最好的問候。

#!/usr/bin/perl 

print "Dime tus numeros\n"; 

@numb =<STDIN>; 


$cua = 0; 
$count = 0; 
$array = "@numb"; 

$max = @numb; #tamaño array 
$joined = join('',@numb); #metemos array en sacalar juntandolo sin espacios 
$joined = $original; #guardamos el num original 


$diff = 999 - $joined; 

for ($i=0; i<=$max;$i++){ #es <= por que el arraylenght no empieza en 0 

    $sumatotal += $numb[$i]; #vamos sumando cada elemento del array 
} 


print "Has añadido los numeros $array. \n"; 
print "Combiandose en $joined que sumados entre si dan:$sumatotal \n"; 
print "La diferencia entre $joined y 999 es $cua\n"; 
+1

「*任何東西似乎都適合我。*」......這太好了。現在,你的問題是什麼? –

+3

這與Perl無關。 Ctrl-D是一個操作系統的東西。在Linux和其他unix系統上,除非您重新配置密鑰,否則在行的開始處的Ctrl-D將發送EOF信號。 Perl會從''返回這個信號。 – ikegami

+1

而且,在DOSish系統上,'CTRL-Z'信號EOF。 –

回答

0

發現問題, For循環永遠不會結束,第二我至極應該是$我的壞聲明的原因,這把執行無限循環。

for ($i=0; i<=$max;$i++) 
+0

或者:'爲我$(0 .. $ max)' – tjd