perl6 从 $*IN 输入多个多行文档的最佳方法是什么

perl6 what is the best way to enter multiple multi-line here-docs from $*IN

我需要输入多个 HERE-DOC。我的代码有 2 个 while 循环。内部循环用于获取多行here-doc。但是当我输入 Control-D 完成一个 here-doc 后,内部 while 循环不再 运行 并且外部循环无限地 运行s。修复它的最佳方法是什么?

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

为什么即使我将 $x 重置为 32,$x 仍会继续为 EOF?为什么 EOF 会卡在 $*IN 中?感谢您的帮助。

当您按下 Ctrl+D 时,终端会关闭其末端的 stdin 流,然后当 Perl 6 尝试继续从中读取时,它总是会收到 EOF。

在您的程序中,这会导致内部 while 循环结束。然后,您再次将 $x 设置为 32,但是在下一次开始内部 while 循环时,$x = $*IN.getc 立即再次将其设置为 Nil,因为流仍然关闭。