Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<;STDIN>;在while-Perl期间不工作_Perl_While Loop_Stdin - Fatal编程技术网

<;STDIN>;在while-Perl期间不工作

<;STDIN>;在while-Perl期间不工作,perl,while-loop,stdin,Perl,While Loop,Stdin,我写了一个小脚本,试图编写一个计算器,只是为了测试我所知道的,但我有一个问题,我想在while循环中读取,它只是冻结,直到我用CTRL+C杀死它 奇怪的是,它在eclipse控制台中工作,但在其他任何地方都不工作 相关代码: require Term::Screen::Uni; use strict; ... sub basicCalc(){ my $scr = new Term::Screen::Uni; $scr->clrscr(); print("Bas

我写了一个小脚本,试图编写一个计算器,只是为了测试我所知道的,但我有一个问题,我想在while循环中读取
,它只是冻结,直到我用
CTRL+C
杀死它

奇怪的是,它在eclipse控制台中工作,但在其他任何地方都不工作

相关代码:

require Term::Screen::Uni;
use strict;

...

sub basicCalc(){
    my $scr = new Term::Screen::Uni;
    $scr->clrscr(); 
    print("Basic calculator - type help for information about your options!\r\n");

    while($input == "1\n"){
        bcOPR();
    }

    $scr->clrscr(); 
    main();
}

sub bcOPR(){
    my $inp = <>;
    if($inp eq "help\n"){ $input = 0; }
}
require Term::Screen::Uni;
严格使用;
...
亚碱基{
my$scr=新学期::屏幕::Uni;
$scr->clrsc();
打印(“基本计算器-键入帮助以获取有关选项的信息!\r\n”);
而($input==“1\n”){
bcOPR();
}
$scr->clrsc();
main();
}
副bcOPR(){
我的$inp=;
if($inp eq“help\n”){$input=0;}
}

从的文档中,您似乎应该使用
getch
而不是
readline
。在
bcOPR
中,您不需要分配
$input=$inp在<代码>中,其他<代码>?另外,您正在使用
==
在您应该使用
eq
@robeall
$input
$inp
的地方,它们实际上并不需要相互关联,您是对的,我确实需要在那里使用eq,thanks@choroba在您的评论中,我尝试删除Term::Screen,现在它工作正常,虽然我真的不明白那里发生了什么。谢谢大家!@Screen截取键盘事件,因此无法获得标准输入。