【问题标题】:perl6/rakudo: Does perl6 enable "autoflush" by default?perl6/rakudo:perl6 默认启用“自动刷新”吗?
【发布时间】:2011-06-30 16:14:01
【问题描述】:
#!perl6
use v6;

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

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

for @a {
    sleep 0.3; 
    .print;
}

默认情况下 perl6 是否启用“自动刷新”。在没有启用“outflush”的情况下使用 perl5,我不会得到这种行为。

【问题讨论】:

  • 看起来世界在过去六年里发生了变化。
  • Rakudo 不支持自动刷新。在$OUTPUT_AUTOFLUSH 条目下的5to6-perlvar 中有一条注释。
  • 什么行为?并注意 unbuffered != autoflush ... 没有人问过或回答过关于 autoflush 的任何 SO 问题,也没有 Rakudo 人,似乎掌握了这一点。

标签: stdout raku autoflush rakudo-star


【解决方案1】:

Rakudo 默认启用自动刷新;规范对默认值保持沉默。

【讨论】:

  • Rakudo 不支持自动刷新。在$OUTPUT_AUTOFLUSH 条目下的5to6-perlvar 中有一条注释。
【解决方案2】:

引用有关自动刷新的文档:

‘没有可用的全局替代方案。默认情况下,TTY 句柄是无缓冲的,对于其他句柄,请将 out-buffer 设置为零或使用 :!out-buffer 并在特定 IO::Handle 上打开。'

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

其他句柄取决于输出缓冲区大小设置。

【讨论】:

  • 无缓冲与自动刷新不同。没有人回答过任何关于 autoflush 的 SO 问题,也没有 Rakudo 的人,似乎都明白这一点。
猜你喜欢
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 2023-04-06
  • 2017-02-14
  • 1970-01-01
  • 2015-03-11
相关资源
最近更新 更多