Perl 6确实具有包含用于指定路径的common OSs和包含文件规范的$*SPEC
的类。 New paths默认使用SPEC的当前值。但是,从文档中还不清楚是否做类似
mkdir IO::Path.new( 'a/b/c' );
将在所有操作系统上正常工作,或者您需要专门创建与操作系统相关的代码。有想法吗?
答案 0 :(得分:8)
我正在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
的{{1}}对象,因此该对象可以使用与OS相关的必需部分。在Rakudo中,mkdir至.absolute确实使用了$*SPEC
。
在Windows中,由IO::Spec
变成/
的{{1}}中还有一个roast test。
正如Elizabeth Mattijsen指出的那样,Windows似乎仅支持正斜杠本身。其他人则声称forever就是这种情况:
实际上,Windows的每个版本以及2.0以后的MS-DOS的每个版本都接受“ /”作为路径定界符。
答案 1 :(得分:4)
在Windows 10企业VM上:
C:\Users\me>c:/rakudo/bin/perl6 -e "mkdir IO::Path.new( 'a/b/c' )"
C:\Users\me>tree a
Folder PATH listing
Volume serial number is xxx
C:\USERS\ME\A
└───b
└───c