簡體   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