perl6 / rakudo:perl6默认启用“autoflush”吗?

问题描述 投票:5回答:2
#!perl6
use v6;

my $message = "\nHello!\n\nSleep\nTest\n\n";

my @a = $message.split( '' );

for @a {
    sleep 0.3; 
    .print;
}

Perl6默认启用“autoflush”。使用perl5而不启用“outflush”我不会得到这种行为。

stdout perl6 autoflush rakudo-star
2个回答
7
投票

Rakudo默认启用autoflush;规范没有提到默认值。


1
投票

引用自动刷新的文档:

'没有全球替代品。默认情况下,TTY句柄是无缓冲的,对于其他句柄,将缓冲区设置为零或使用:!out-buffer with open on a specific IO :: Handle。

所以对stdout的任何打印都是无缓冲的,我猜它的行为类似于自动刷新的perl5标准输出。

其他句柄取决于out-buffer size set。

© www.soinside.com 2019 - 2024. All rights reserved.