在perl中按顺序将哈希值转储到yaml文件

前端之家收集整理的这篇文章主要介绍了在perl中按顺序将哈希值转储到yaml文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将hash的内容顺序转储到yaml文件中,我不希望它按字母方式打印.

#!usr/bin/perl
use strict;
use warnings;
use YAML qw(Dump);

my $hash = { b => "2",a => "1",d => "4",c => "3" };
open( FH,">file.yaml" ) or die "Can't open file.yaml : $!\n";
print FH Dump($hash);
close FH;

预期的产出是

---
b:2
a:1
d:4
c:3

但我输出

---
a:1
b:2
c:3
d:4

解决方法

Perl普通哈希值没有排序,默认情况下 YAML模块对键进行排序.

但是,YAML提供了Bless功能,因此您可以更改数据结构输出的行为.对于Hashes,这允许您指定要输出的特定键及其顺序:

use strict;
use warnings;
use YAML qw(Dump Bless);

my $hash = { b => "2",c => "3" };

Bless($hash)->keys( [qw(b a d c)] );
print Dump($hash);

产量

b: 2
a: 1
d: 4
c: 3

请注意,Blessing Perl数据结构无论如何都不会改变它.额外信息单独存储,并由Blessed节点的内存地址查找.

猜你在找的Perl相关文章