读取STDIN的perl子程序("按Enter键重置")仅在第一次工作

时间:2015-04-29 18:34:20

标签: perl stdin subroutine

我为一个儿童演示做了一个小的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;
   }
  }
}

感谢您的期待!

1 个答案:

答案 0 :(得分:3)

dd if=old-sdb2-pt.vmdk of=sdb2-pt.vmdk bs=1 count=440中,您再次循环sub restart。这将继续循环,而不返回主循环,直到STDIN收到EOF。您可以在<STDIN>之后放置return以返回主循环。