在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节点的内存地址查找. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |