2017-06-29 227 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