我有一系列哈希.
输出:
$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,性别.
按键或键值对数组进行排序也不会使值按正确的顺序排列.是否有一个简单的解决方案以所需的顺序打印哈希?
哈希明确无序.所以不,你做不到.维持秩序只有两种方式(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
).