相关疑难解决方法(0)

捕获模块输出

假设我们有这个模块:

unit module outputs;

say "Loaded";
Run Code Online (Sandbox Code Playgroud)

我们这样加载它

use v6;

use lib ".";

require "outputs.pm6";
Run Code Online (Sandbox Code Playgroud)

这将打印出"已加载" require.假设我们想要捕获该加载模块的标准输出.我们可以这样做,如果它是一个外部进程,但似乎没有办法重定向*OUT到一个字符串,或者,如果不可能,重定向到一个文件.是这样吗?

io perl6 raku

5
推荐指数
2
解决办法
99
查看次数

如何管道字符串来处理'STDIN?

我有一个命令,期望从管道输入.例如,考虑一下着名的cat命令:

$ echo Hello | cat
Hello
Run Code Online (Sandbox Code Playgroud)

假设我在Perl 6程序中有一个字符串,我想管道输入命令:

use v6;

my $input = 'Hello'; # This is the string I want to pipe to the command.
my $proc  = run 'cat', :in($input);
Run Code Online (Sandbox Code Playgroud)

这不起作用(我没有输出).我可以通过调用bash和解决这个问题echo:

my $proc  = run 'bash', '-c', "echo $input | cat";
Run Code Online (Sandbox Code Playgroud)

但是,有没有一种方法,我可以做到这一点,但不运行bashecho

在Perl5中,我可以简单地做my $pid = open my $fh, '|-', 'cat';,然后print $fh $str.

pipe perl6 raku

3
推荐指数
1
解决办法
277
查看次数

标签 统计

perl6 ×2

raku ×2

io ×1

pipe ×1