数据.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
这似乎是 Rakudo/MoarVM 中的一个错误,回到 MoarVM 期望单个字素作为分隔符而不是任意字符串的事实(参见同步文件.c:38 https://github.com/MoarVM/MoarVM/blob/2015.03/src/io/syncfile.c#L38, 同步文件.c:119 https://github.com/MoarVM/MoarVM/blob/2015.03/src/io/syncfile.c#L119 and 同步文件.c:91 https://github.com/MoarVM/MoarVM/blob/2015.03/src/io/syncfile.c#L91,这表明使用分隔符字符串的最后一个字符而不是整个字符串)。
作为一种快速解决方法(但请注意这会将整个文件读取到内存中),请使用
$fname.IO.slurp.split("\n\n")
代替$infile.lines()
.
您还应该提交错误报告或询问#perl6
如果这是一个已知问题,请在 Freenode 上进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)