该程序从另一个程序中捕获所有标准错误,但它有时会给我一个部分界限:
#!/bin/env perl6
my $proc = Proc::Async.new('./print_to_stderr');
$proc.stderr.tap( -> $str {
for $str.lines() {
put "Captured ERR: $_";
}
});
my $promise = $proc.start;
await $promise;
使用./print_to_stderr
:
#!/bin/env perl6
for ^10 {
$*ERR.put: "($_): Howdee";
}
刚才,我得到了以下输出:
Captured ERR: (0): Howdee
Captured ERR: (1): Howdee
...
Captured ERR: (6): Howdee
Captured ERR: (7): Howde
Captured ERR: e
Captured ERR: (8): Howdee
如您所见,对于项目7
,标准错误在两个不同的tap
之间被分解。但是我希望它等一下,给我一条整线。
更新:使用Rakudo Star 2017.04
对我来说这是可重现的,但正如下面的Elizabeth Mattijsen所指出的那样,这不是Rakudo Star 2017.07
中的问题。
答案 0 :(得分:3)
您使用的是哪个版本的Rakudo Perl 6?我无法重现这个问题。无论如何,Supply.lines
不应该给你不完整的行。因此,如果在最新版本的Rakudo Perl 6上发生这种情况,则应将此报告为错误。