【问题标题】:In perl6, how do you read a file in paragraph mode?在 perl6 中,如何以段落模式读取文件?
【发布时间】:2015-03-21 03:40:34
【问题描述】:

数据.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 raku


    【解决方案1】:

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

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

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

    而不是$infile.lines()

    如果这是一个已知问题,您还应该提交错误报告或在 Freenode 上的 #perl6 中询问。

    【讨论】:

    • 在 irc #perl6,他们修补了文档以从 lines() 定义中删除 :nl 参数,他们告诉我为 open() 提交错误报告,我这样做了:@987654324 @.
    猜你喜欢
    • 2019-05-29
    • 2019-09-03
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多