Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

raku run('find .', :out); not working on MacOS

Tags:

raku

While testing around this issue, Can raku avoid this Malformed UTF-8 error? it was suggested that I try using the built in MacOS 'find .' command with the raku run function.

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] 

Turns out that raku shell works fine, but raku run fails. I am not entirely sure if this is a bug with raku on MacOS (if so, I am happy to report it) ...?

[MacOS Catalina 10.15.17 ... Welcome to 𝐑𝐚𝐤𝐮𝐝𝐨™ v2020.10. Implementing the 𝐑𝐚𝐤𝐮™ programming language v6.d. Built on MoarVM version 2020.10.]

like image 538
p6steve Avatar asked Mar 15 '21 13:03

p6steve


1 Answers

The issue you're running encountering isn't related to MacOS – it's caused by the difference in how &shell and &run work. Consulting the docs, we can see that shell's signature includes $cmd – the command as a Str, exactly as you provided.

In contrast, run's signature specifies that it takes *@args – that is, a list of zero or more arguments to execute.

To match this signature, you should change your code as shown below:

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

(Your version asked your computer to run the program find ., which doesn't exist in your $PATH, which explains why it produced no output.)

like image 142
codesections Avatar answered Oct 13 '22 01:10

codesections