io - 捕获模块输出

标签 io raku

假设我们有这个模块:

unit module outputs;

say "Loaded";

我们像这样加载它
use v6;

use lib ".";

require "outputs.pm6";

这将在 require 时打印“已加载” d。假设我们要捕获该加载模块的标准输出。如果 it's an external process 我们可以这样做,但似乎没有重定向 *OUT 的方法到一个字符串,或者,如果不可能的话,到一个文件。是这样吗?

最佳答案

您可以尝试使用 IO::String :

use v6;
use lib ".";
use IO::String;

my $buffer = IO::String.new;
with $buffer -> $*OUT {
    require "outputs.pm6";
};

say "Finished";
print ~$buffer;

输出 :
Finished
Loaded

另见 If I reassigned OUT in Perl 6, how can I change it back to stdout?

关于io - 捕获模块输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855966/

相关文章:

raku - 如何在 Perl 6 中使用非缓存的无限惰性列表

raku - 如何在MAIN中要求1个或多个参数

java - in.next() 在做什么?

Java - 读取 BZ2 文件并即时解压缩/解析

来自文本文件的 C 字符串

c# - 使用 Windows 资源管理器的重命名事件 Hook 我的程序

c - 在库之间共享 FILE 指针

arrays - perl6 在循环遍历数组时修改数组的一般方法

perl - 如何从 perl6 中的数组或散列创建方法

raku - 在 Perl 6 中使正则表达式完全匹配零个字符的最佳方法是什么?