【问题标题】:PERL CTRL-D not stoping user inputPERL CTRL-D 不停止用户输入
【发布时间】:2017-12-03 10:19:48
【问题描述】:

学习 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";

【问题讨论】:

  • "任何东西似乎都适合我。" ...太好了。现在,你的问题是什么?
  • 这与 Perl 无关。 Ctrl-D 是操作系统的东西。在 Linux 和其他 unix 系统上,除非您重新配置密钥,否则行首的 Ctrl-D 将发送 EOF 信号。 Perl 将通过从&lt;STDIN&gt; 返回来响应该信号。
  • 而且,在 DOSish 系统上,CTRL-Z 发出 EOF 信号。

标签: perl user-input eof


【解决方案1】:

发现问题, For循环永远不会结束第二个i应该是$i的错误声明的原因,这使执行陷入无限循环。

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

【讨论】:

  • 或者:for my $i ( 0..$max )
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多