我怎样才能让 Perl 6 的 运行 在 Windows 上工作?

How can I get Perl 6's run to work on Windows?

我在 Windows 上和 run 一起玩。用 dir 尝试它不起作用,但也许我遗漏了一些东西:

put '-' x 70;
my $p1 = run 'dir', :out;
put "exit code: {$p1.exitcode}";
put $p1.out.slurp(:close);

put '-' x 70;
my $p2 = Proc.new: :out;
put "exit code: {$p2.exitcode}";
$p2.spawn: 'dir';
$p2.out.slurp(:close).say;

输出只是规则和退出代码行:

----------------------------------------------------------------------       
exit code: 1                                                                 

----------------------------------------------------------------------       
exit code: 1                                                                 

dirshell 一起工作很好,但这是一种不同的做事方式。我可以做到这一点,但这是通过 run 想要避免的 shell:

my $p1 = run 'cmd.exe', '/C', 'dir', :out;

可能是 a bug related to libuv's handling of argumentsdir 是一个内部的 cmd.exe 命令。我自己对 Windows 不太熟悉,但我认为最好提出一个问题。

这是预期的行为,因为 dir 是一个 shell 命令,而不是可执行文件。

如果您点击 ⊞ Win+R 打开 运行 对话框并输入 dir,它将因同样的原因而失败(除非您碰巧在路径中的某处有一个不相关的可执行文件 dir.exe)。