无法将合并数据写入 yaml 文件
Could not write merged data into yml file
我正在尝试使用以下 perl
代码合并两个 yml 文件。当我通过 Dumper
模块打印 $res
时,我可以看到数据。
我运行我的脚本,但是final.yml
有参考数据,而不是原始数据:-
srcARRAY(0x1013320)local_pointerARRAY(0x10228f8)
代码:-
use warnings;
use strict;
use feature 'say';
use Data::Dump;
use Data::Dumper;
use Storable qw(dclone);
use YAML qw(LoadFile);
use File::Slurp qw(write_file);
use Hash::Merge qw(merge);
Hash::Merge::set_behavior('RETAINMENT_PRECEDENT');
die "Usage: [=11=] file1 file2\n" if @ARGV != 2;
my ($fname1, $fname2) = @ARGV;
my $yml1 = LoadFile($fname1);
my $yml2 = LoadFile($fname2);
my $res = merge($yml1, $yml2);
#print Dumper $res;
write_file("final.yml", { binmode => ':raw' }, %{$res});
我们是否需要在 perl Hash::Merge
模块中设置任何自定义设置?
要将 YAML 数据写入文件,请使用 YAML Dump
函数:
use warnings;
use strict;
use YAML qw(LoadFile Dump);
use File::Slurp qw(write_file);
use Hash::Merge qw(merge);
Hash::Merge::set_behavior('RETAINMENT_PRECEDENT');
die "Usage: [=10=] file1 file2\n" if @ARGV != 2;
my ($fname1, $fname2) = @ARGV;
my $yml1 = LoadFile($fname1);
my $yml2 = LoadFile($fname2);
my $res = merge($yml1, $yml2);
write_file("final.yml", Dump($res));
或者,您也可以使用 YAML::DumpFile
代替 File::Slurp::write_file
:
DumpFile("final.yml", $res);
我正在尝试使用以下 perl
代码合并两个 yml 文件。当我通过 Dumper
模块打印 $res
时,我可以看到数据。
我运行我的脚本,但是final.yml
有参考数据,而不是原始数据:-
srcARRAY(0x1013320)local_pointerARRAY(0x10228f8)
代码:-
use warnings;
use strict;
use feature 'say';
use Data::Dump;
use Data::Dumper;
use Storable qw(dclone);
use YAML qw(LoadFile);
use File::Slurp qw(write_file);
use Hash::Merge qw(merge);
Hash::Merge::set_behavior('RETAINMENT_PRECEDENT');
die "Usage: [=11=] file1 file2\n" if @ARGV != 2;
my ($fname1, $fname2) = @ARGV;
my $yml1 = LoadFile($fname1);
my $yml2 = LoadFile($fname2);
my $res = merge($yml1, $yml2);
#print Dumper $res;
write_file("final.yml", { binmode => ':raw' }, %{$res});
我们是否需要在 perl Hash::Merge
模块中设置任何自定义设置?
要将 YAML 数据写入文件,请使用 YAML Dump
函数:
use warnings;
use strict;
use YAML qw(LoadFile Dump);
use File::Slurp qw(write_file);
use Hash::Merge qw(merge);
Hash::Merge::set_behavior('RETAINMENT_PRECEDENT');
die "Usage: [=10=] file1 file2\n" if @ARGV != 2;
my ($fname1, $fname2) = @ARGV;
my $yml1 = LoadFile($fname1);
my $yml2 = LoadFile($fname2);
my $res = merge($yml1, $yml2);
write_file("final.yml", Dump($res));
或者,您也可以使用 YAML::DumpFile
代替 File::Slurp::write_file
:
DumpFile("final.yml", $res);