【问题标题】:perl6 what is the best way to enter multiple multi-line here-docs from $*INperl6 从 $*IN 输入多个多行 here-docs 的最佳方法是什么
【发布时间】:2017-05-10 11:36:51
【问题描述】:

我需要输入多个 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 中?感谢您的帮助。

【问题讨论】:

    标签: raku getc


    【解决方案1】:

    当你按下 Ctrl+D 时,终端会在其末尾关闭标准输入流,然后当 Perl 6 尝试继续从中读取时,它总是会得到 EOF。

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

    【讨论】:

    • 好的,我现在明白了。我通过避免 Ctrl-D 一起解决了这个问题。再次感谢短信!!
    猜你喜欢
    • 2022-01-13
    • 2022-12-07
    • 1970-01-01
    • 2016-05-26
    • 2010-09-07
    • 2016-12-21
    • 2014-12-14
    相关资源
    最近更新 更多