作者:mobiledu2502881467 | 来源:互联网 | 2023-01-09 09:09
我有一个命令,期望从管道输入.例如,考虑一下着名的cat
命令:
$ echo Hello | cat
Hello
假设我在Perl 6程序中有一个字符串,我想管道输入命令:
use v6;
my $input = 'Hello'; # This is the string I want to pipe to the command.
my $proc = run 'cat', :in($input);
这不起作用(我没有输出).我可以通过调用bash
和解决这个问题echo
:
my $proc = run 'bash', '-c', "echo $input | cat";
但是,有没有一种方法,我可以做到这一点,但不运行bash
和echo
?
在Perl5中,我可以简单地做my $pid = open my $fh, '|-', 'cat';
,然后print $fh $str
.
1> Holli..:
管道好几个命令也很容易.要实现相当于管道回声"Hello,world"| cat -n在Perl 6中,并从第二个命令捕获输出,你可以做到
my $p1 = run 'echo', 'Hello, world', :out;
my $p2 = run 'cat', '-n', :in($p1.out), :out;
say $p2.out.get;
您也可以直接从程序中输入:in管道,方法是将其设置为True,这将通过Proc上的.in方法使管道可用:
my $p = run "cat", "-n", :in, :out;
$p.in.say: "Hello,\nworld!";
$p.in.close;
say $p.out.slurp: :close;
# OUTPUT: «1 Hello,?
# 2 world!?»
直接来自文档,顺便说一下