Perl STDIN在while循环之前执行



我是一个完全的perl新手,希望这个问题不要太蠢!

我试图写一个绞刑风格的游戏,并得到它的全部工作,除了由于某种原因STDIN似乎执行之前的while循环的其余部分-所以我被迫输入我所有的字母猜测之前打印出任何东西

while()
{
    foreach $letter (@currentword)
    {
        print "$letter";
    }
    print "n";
    print "Guess a letter: n";
    chomp($guess = <STDIN>);
    $guess=lc(substr($guess,0,1));  
    if ( $randword =~ /($guess)+/i )
    {
        print "Correct!n";
        for ($index=0; $index<$wordlength; $index++)
        {
            if ($wordarray[$index] eq $guess)
            {
                $currentword[$index]=$wordarray[$index];
            }
        }       
    }
    else
    {
        print "Incorrect! try againn";
    }   
    $guesses -= 1;
    last if $guesses < 1;
    $finalword = join("",@currentword);
    last if ($finalword eq $randword);  
}

STDOUT必须附加到终端以外的东西上,从而使用块缓冲而不是行缓冲。尝试添加

$| = 1;

(我认为从STDIN读取会导致STDOUT被刷新)

相关内容

  • 没有找到相关文章

最新更新