You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl使用Hash::Merge合并YML文件写入时出现引用数据如何解决?

不需要为Hash::Merge设置额外的自定义参数,你遇到的问题是写入文件的逻辑错误导致的。

问题原因

File::Slurp的write_file方法会直接将传入的变量转为字符串写入,你传入解引用后的%{$res}时,哈希值中嵌套的数组、哈希引用会直接被序列化为内存地址字符串,也就是你看到的ARRAY(0x1013320)这类内容。
之前用Dumper能正常查看结构,是因为Dumper会递归解析引用结构,原生的字符串序列化不会做这个处理。

修复方案

你已经引入了YAML模块,只需要先调用YAML::Dump方法将合并后的引用结构转为合法的YAML格式字符串,再写入文件即可。
将原来的write_file相关代码替换为以下内容:

my $res = merge($yml1, $yml2);
# 先转成标准YAML格式再写入文件
write_file("final.yml", { binmode => ':raw' }, YAML::Dump($res));

内容的提问来源于stack exchange,提问作者Ramse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:24:02