我需要输入多个HERE-DOC。我的代码有2个while循环。内部循环用于获取多行here-doc。但是在我输入Control-D来完成一个here-doc之后,内部while循环不会再次运行而外部循环无限运行。修复它的最佳方法是什么?
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?谢谢你的帮助。
答案 0 :(得分:2)
按Ctrl + D时,终端关闭stdin流,然后当Perl 6尝试继续读取时,它总是得到EOF。
在你的程序中,这会导致内部while
循环结束。然后,您再次将$x
设置为32
,但在内部while
循环的下一个开始时,$x = $*IN.getc
会立即再次将其设置为Nil
,因为流仍然关闭。