如何在Ctrl + D输入上退出Perl 6脚本?

Eug*_*sky 3 perl6

loop {
  my $word = prompt '> ' ;
  say $word;
}
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法,exit如果/当而不是打印一个单词我按Ctrl + D?

Kei*_*son 7

我对Perl 6的熟悉程度不如Perl 5,但Perl 5方法似乎有效:

loop {
  my $word = prompt '> ' ; 
  last if not defined $word;
  say $word;
}
Run Code Online (Sandbox Code Playgroud)

这可能更惯用:

while (defined my $word = prompt '> ') {
    say $word;
}
Run Code Online (Sandbox Code Playgroud)

(如果没有defined运算符,循环将在空输入处终止.)


Eli*_*sen 5

有一个小助手子:

sub not-done(\value) {
    value but True if value.defined
}
Run Code Online (Sandbox Code Playgroud)

然后你可以把你的循环写成:

while not-done prompt("> ") -> $word {
    say $word
}
Run Code Online (Sandbox Code Playgroud)