【发布时间】:2011-01-19 12:37:24
【问题描述】:
我对 Perl 和 YAML 还很陌生。我想从 YAML 文件中读取数据,并在不重写整个配置文件的情况下编辑/写入一些属性值(保留现有的 cmets、空白行、空格等)
我在 Perl 中使用 YAML 库。实现这一目标的好方法是什么?
【问题讨论】:
我对 Perl 和 YAML 还很陌生。我想从 YAML 文件中读取数据,并在不重写整个配置文件的情况下编辑/写入一些属性值(保留现有的 cmets、空白行、空格等)
我在 Perl 中使用 YAML 库。实现这一目标的好方法是什么?
【问题讨论】:
你不能轻易地写文件的一部分——你最终会重写整个文件。如果您确实编写了部分文件,则必须查找起始位置,将文件截断到该长度(或截断然后查找/追加),然后在未更改的开始后写入文件的新尾部。文件系统不支持“删除偏移 193 处的 329 字节并在结果偏移 227 后插入 46 字节”等操作。
如果您的 YAML 模块(库)以某种方式保留或提供前导 cmets 和空行,那么您将能够轻松地保留它们。如果没有,那么您可能必须自己完成这项工作 - 读取并保存注释行,然后使用 YAML 解析文件,然后编写保留的 cmets 和替换 YAML。
【讨论】: