繁体   English   中英

读取STDIN(“按Enter以重设”)中的perl子例程仅在第一次时有效

[英]perl subroutine from reading STDIN (“Press enter to reset”) only works the first time

我为儿童演示制作了一个小小的perl程序,我试图通过一个clear子例程来保持屏幕的清洁和简单,但是它只是第一次工作,因此不会响应输入,只会清除屏幕,并且我不知道为什么。 我也确信一般来说,有一种更简单的方法可以做到这一点,所以也许应该废弃整个事情。

会提示您从STDIN进行查询,然后一旦检查数据库,它将调用restart子程序。

我有的:

while (my $seq = <STDIN>){
  chomp($seq);
  if (exists $references{$seq}){
    ... blah blah blah
    sleep(2);
    &restart;
  }else{
    print "\nOops! This  doesn't exist!\n";
    sleep(2);
    &restart;
  }
}
sub restart {
  print "\nPress Enter to restart\n";
  while (my $in = <STDIN>){
   if($in eq "\n"){
     system("clear");
     print $prompt;
   }
  }
}

感谢您的光临!

sub restart您将再次在<STDIN>上循环。 这将继续循环,而不返回主循环,直到STDIN收到EOF。 您可以在print $prompt;之后放一个return print $prompt; 返回主循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM