Perl6:来自IO :: Path的`dir`是否以正确的方式解码文件名?

时间:2016-01-21 16:33:36

标签: io perl6

来自IO::Pathdir函数是否以正确的方式自动解码文件名,还是可以设置编码?

在Perl5中,我主要遵循建议来解码输入并对输出进行编码。

所以例如在Perl5中我会写这样的东西,如果操作系统用来编写文件名的编码与控制台输出的编码不同。

use Encode::Locale;
use Encode qw(decode);
binmode STDOUT, ':encoding(console_out)';

my @files;
while ( my $file = readdir $dh ) {
    push @files, decode( 'locale_fs', $file );
}
for my $file ( @files ) {
     print "$file\n";
}

在Perl6中,我并不确切知道应该做些什么。

1 个答案:

答案 0 :(得分:1)

Perl 6在内部使用Unicode字符串(在基于字形的表示中),并且编码发生在IO边界。

对于控制台输出,您可以通过$*OUT.encoding("...")手动设置编码。

对于目录列表,它取决于后端:使用JVM,应该做正确的事情(或者以与Java相同的方式失败)。使用MoarVM,它将取决于平台:在Win32上,使用Unicode API(再次,应该做正确的事情),而在其他平台上,UTF-8 is assumed。从该片段可以看出,原则上使用不同编码的能力存在于最低级别,但它似乎没有以任何方式暴露给用户......