raku run('find .', :out); 不适用于 MacOS

p6s*_*eve 6 raku

在围绕这个问题进行测试时,raku 可以避免这种格式错误的 UTF-8 错误吗?有人建议我尝试使用内置的 MacOS 'find '。带有 raku 运行功能的命令。

1 #!/usr/local/bin/raku
2 
3 shell('find .');                    #works
4 
5 my $proc = run('find .', :out);     #fails with
6 $proc.out.lines(:close).say;        #() [ie. ().Seq] 
Run Code Online (Sandbox Code Playgroud)

结果证明 raku shell 工作正常,但 raku run 失败。我不完全确定这是否是 MacOS 上 raku 的错误(如果是,我很乐意报告)......?

[MacOS Catalina 10.15.17 ... 欢迎来到™ v2020.10。实现™ 编程语言 v6.d。基于 MoarVM 版本 2020.10。]

cod*_*ons 9

您在运行时遇到的问题与 MacOS 无关 – 这是由方式&shell&run工作方式的差异引起的。查阅文档,我们可以看到shell的签名包括$cmd– 命令作为 a Str,完全与您提供的一样。

相比之下,run的签名指定它需要*@args——也就是说,要执行的零个或多个参数的列表。

要匹配此签名,您应该更改代码,如下所示:

# my $proc = run('find .', :out);     # doesn't work
  my $proc = run('find', '.', :out);  # works
  my $p2   = run <find .>, :out;      # also works (using word-splitting)
Run Code Online (Sandbox Code Playgroud)

(您的版本要求您的计算机运行该程序find .,该程序在您的$PATH.