Perl 6 确实有包含用于指定路径的 common OSs 以及包含文件规范的 $*SPEC
的类。 New paths 默认使用当前的 SPEC 值。但是,从文档中根本不清楚,如果做类似的事情
mkdir IO::Path.new( 'a/b/c' );
将在所有操作系统上正常工作,或者您需要专门创建与操作系统相关的代码。任何想法?
最佳答案
我正在 Windows 7(根据标签你似乎最感兴趣的操作系统之一)上尝试这个,使用
This is Rakudo Star version 2019.03.1 built on MoarVM version 2019.03
implementing Perl 6.d.
它似乎就是这样工作的
> with mkdir IO::Path.new('a/b/c') { say .e; say .absolute }
True
C:\rakudo\a\b\c
该目录确实已正确创建。
请注意,
IO::Path
在其构造函数中采用默认为 IO::Spec
的 $*SPEC
对象,因此该对象可以使用必要的操作系统相关部分。在 Rakudo 中 IO::Spec
确实被 mkdir 使用到 .absolute 。在 Windows 上,
/
变成 IO::Path
中还有一个关于 \
的 roast test。正如 Elizabeth Mattijsen 指出的那样,Windows 似乎只支持正斜杠。其他人声称情况就是这样 forever :