流式传输 YAML 输出,而不是将所有内容加载到内存中

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

我使用 Perl 和

YAML::XS
来编写 YAML 输出。具体来说,此 YAML 输出是其他 YAML 文件内容的列表。我这样做,例如,像这样:

use YAML::XS qw(LoadFile DumpFile);

my @yaml_files = qw(foo.yaml bar.yaml quux.yaml);

DumpFile("output.yaml", [
   map { LoadFile($_) } @yaml_files
]);

我的理解是,这会将每个输入 YAML 文件加载到内存中以创建列表,然后最终将输出写入磁盘。一般来说,这是有道理的,但在这种情况下,有机会一次流式传输一个列表项的输出。如果确实可能的话,如何用

YAML::XS
来做到这一点?


备注:

  • 可以自己做一些字符串操作,以流式传输列表输出——而不是使用
    DumpFile
    ——但这依赖于我输出正确的YAML。在这种情况下相对简单,但我宁愿遵循库代码。
  • 我的环境非常有限。我有
    YAML::XS
    ,但这超出了标准库的范围。
perl stream yaml xs
1个回答
0
投票

使用 YAML::XS 无法完成此操作。

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