在二进制模式下Perl 6 $*ARGFILES.handles?

Arn*_*mer 7 perl6

我正在尝试$*ARGFILES.handles,它似乎以二进制模式打开文件.

我正在编写一个zip-merge程序,它会从每个文件中打印一行,直到没有更多行要读取.

#! /usr/bin/env perl6

my @handles = $*ARGFILES.handles;

# say $_.encoding for @handles;

while @handles
{
  my $handle = @handles.shift;
  say $handle.get;
  @handles.push($handle) unless $handle.eof;
}
Run Code Online (Sandbox Code Playgroud)

我这样调用它:zip-merge person-say3 repeat repeat2

它失败了:无法在./zip-merge第7行的块中以二进制模式对句柄执行'get'

指定的文件是文本文件(以utf8编码),我收到非可执行文件和可执行文件(使用perl6代码)的错误消息.

注释掉的行说出我给它的每个文件的utf8,所以它们不应该是二进制的,

perl6 -v:这是基于MoarVM版本2018.10构建的Rakudo版本2018.10

我做错了什么,或者我发现了错误?

jjm*_*elo 1

:bin始终设置在此类对象中。由于您正在处理句柄,因此您应该按照示例中的说明逐行读取,或者重置句柄以使其不处于二进制模式。