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
,因为流仍然关闭。
我需要输入多个 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
,因为流仍然关闭。