假设我们有这个模块:
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到一个字符串,或者,如果不可能,重定向到一个文件.是这样吗?
我有一个命令,期望从管道输入.例如,考虑一下着名的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)
但是,有没有一种方法,我可以做到这一点,但不运行bash和echo?
在Perl5中,我可以简单地做my $pid = open my $fh, '|-', 'cat';,然后print $fh $str.