在perl6中,您如何以段模式读取文件?

问题描述 投票:6回答:1

data.txt:

hello world
goodbye mars

goodbye perl6
hello perl5

myprog.py:

my $fname = 'data.txt';
my $infile = open($fname, :r, nl => "\n\n");

for $infile.lines(nl => "\n\n") -> $para {
    say $para;
    say '-' x 10;
}

实际输出:

hello world
----------
goodbye mars
----------

----------
goodbye perl6
----------
back to perl5
----------

所需的输出:

hello world
goodbye mars
-----------
goodbye perl6
back to perl5
-----------

...

$ perl6 -v
This is perl6 version 2015.03-21-gcfa4974 built on MoarVM version 2015.03
file io perl6 raku
1个回答
5
投票

[这似乎是Rakudo / MoarVM中的错误,可以回溯到MoarVM期望使用单个字素代替任意字符串(参见syncfile.c:38syncfile.c:119syncfile.c:91作为分隔符的事实,这表明最后一个使用分隔符字符而不是整个字符串)。

作为一种快速的解决方法(但请注意,这会将整个文件读入内存),请使用

$fname.IO.slurp.split("\n\n")

而不是$infile.lines()

您还应该提交错误报告,或在Freenode的#perl6中询问是否存在已知问题。

© www.soinside.com 2019 - 2024. All rights reserved.