<;STDIN>;在while-Perl期间不工作
我写了一个小脚本,试图编写一个计算器,只是为了测试我所知道的,但我有一个问题,我想在while循环中读取<;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
,它只是冻结,直到我用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截取键盘事件,因此无法获得标准输入。