2

複数の HERE-DOC を入力する必要があります。私のコードには 2 つの while ループがあります。内側のループは、複数行のヒアドキュメントを取得するために使用されます。しかし、Control-D を入力して 1 つのヒアドキュメントを完了すると、内側の while ループが再び実行されず、外側のループが無限に実行されます。それを修正する最良の方法は何ですか?

while True {
    my $y = ""; 
    my $x = 32;
    while $x=$*IN.getc { 
        $y = $y ~ $x; 
    }
    say "==========";
    say "[$y]"; sleep 2;
}

$x を 32 にリセットした後でも、$x が EOF のままになるのはなぜですか? $*IN で EOF がスタックするのはなぜですか? ご協力ありがとうございました。

4

1 に答える 1

2

Ctrl+D を押すと、ターミナルは stdin ストリームの最後を閉じ、Perl 6 がそこから読み込もうとすると、常に EOF を取得します。

プログラムでは、これにより内側のwhileループが終了します。その後、再び に設定$xしますが、内部ループ32の次の開始時に、ストリームがまだ閉じているため、すぐに再び に設定します。while$x = $*IN.getcNil

于 2016-12-27T17:51:28.597 に答える