我们如何在Perl 6中使用与OS无关的路径?

jjm*_*elo 7 windows perl6 raku

Perl 6确实包含一些类,这些类包括用于指定路径的通用操作系统以及$*SPEC包含文件规范的类。默认情况下,新路径使用SPEC的当前值。但是,从文档中还不清楚是否做了类似的事情

mkdir IO::Path.new( 'a/b/c' );
Run Code Online (Sandbox Code Playgroud)

在所有操作系统上都能正常工作,或者您需要专门创建与操作系统相关的代码。任何的想法?

Tob*_*ege 8

我正在Windows 7(根据标签似乎是您最感兴趣的OS之一)上尝试使用

This is Rakudo Star version 2019.03.1 built on MoarVM version 2019.03
implementing Perl 6.d.
Run Code Online (Sandbox Code Playgroud)

它似乎像那样工作

> with mkdir IO::Path.new('a/b/c') { say .e; say .absolute }
True
C:\rakudo\a\b\c
Run Code Online (Sandbox Code Playgroud)

该目录确实已正确创建。

请注意,IO::PathIO::Spec对象$*SPEC在其构造函数中默认使用,因此该对象可以使用必要的OS相关部分。在Rakudo中,IO::Spec确实是mkdir通过.absolute使用的。还有一个烤测试/IO::Path成为\Windows上。

正如Elizabeth Mattijsen指出的那样,Windows似乎仅支持正斜杠本身。其他人则声称这种情况永远存在

实际上,Windows的每个版本以及MS-DOS从2.0开始的每个版本都接受“ /”作为路径定界符。