当前位置:  开发笔记 > 编程语言 > 正文

如何在perl中以特定顺序打印哈希

如何解决《如何在perl中以特定顺序打印哈希》经验,为你挑选了1个好方法。

我有一系列哈希.

输出:

$VAR1 = {
      'Name' => 'Bob',
      'Address' => 'Home',
      'DOB' => '01/01/1990',
      'Sex' => 'M',
    };
$VAR2 = {
      'Name' => 'Mary',
      'Address' => 'Home',
      'DOB' => '01/01/1990',
      'Sex' => 'F',
    };

我打印到xml文件.但是,当我将此数组打印到xml文件时,我得到:


我喜欢有姓名,地址,DOB,性别.


按键或键值对数组进行排序也不会使值按正确的顺序排列.是否有一个简单的解决方案以所需的顺序打印哈希?



1> Sobrique..:

哈希明确无序.所以不,你做不到.维持秩序只有两种方式(a hash):

使用数组来强制使用哈希切片进行排序.

使用按所需顺序返回键的排序功能.

就像是:

my @fields = qw (  Name Address DOB Sex );
my @ordered_values = @hash{@fields}; 

或者只是一个简单的:

foreach my $key ( @fields ) {
    print "$key=$hash{$key} "; 
}

虽然,如果您正在使用XML ...可能有更好的方法来处理源数据,而不是首先将其填充到哈希中.

我会注意到 - 在编写XML时,通常不会在XML的内容中内联键值,而是作为属性(或子元素):


要么:


   
Home
01/01/1990 Bob M

因为通过这样做,您可以使用XML查询工具来匹配特定条件(如xpath).

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有