加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:23:36 所属栏目:大数据 来源:网络整理
导读:我想将hash的内容顺序转储到yaml文件中,我不希望它按字母方式打印. #!usr/bin/perluse 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的内容顺序转储到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节点的内存地址查找.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读