2017-06-29 3 views
-3

Lernen perl Ich fand, dass in diesem Fall STRG + D nicht funktioniert, um Benutzereingaben zu stoppen. Seine Arbeit in anderen Skripten ist wahrscheinlich etwas, das mit dem Code selbst verbunden ist.PERL CTRL-D nicht stoppen Benutzereingabe

Ich habe im Internet über EOF gelesen, aber irgendetwas scheint für mich zu funktionieren.

Vielen Dank im Voraus und beste Grüße.

#!/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

"* irgendetwas scheint für mich zu arbeiten. *" ... Das ist großartig. Nun, was ist deine Frage? –

+3

Das hat nichts mit Perl zu tun. Strg-D ist eine Betriebssystem-Sache. Auf Linux- und anderen Unix-Systemen sendet Ctrl-D am Anfang einer Zeile ein EOF-Signal, sofern Sie den Schlüssel nicht neu konfiguriert haben. Perl antwortet auf dieses Signal, indem es von "" zurückkehrt. – ikegami

+1

Und auf DOSish-Systemen signalisiert 'CTRL-Z' EOF. –

Antwort

0

das Problem gefunden, For-Schleife endet nie Ursache für schlechte Erklärung der zweit i weiche sollte dies die Ausführung in einer Endlosschleife setzte $ i, sein.

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

Alternativ: 'für mein $ i (0 .. $ max)' – tjd