Joh*_*ohn -1 printing perl hash
我有一系列哈希.
输出:
$VAR1 = {
'Name' => 'Bob',
'Address' => 'Home',
'DOB' => '01/01/1990',
'Sex' => 'M',
};
$VAR2 = {
'Name' => 'Mary',
'Address' => 'Home',
'DOB' => '01/01/1990',
'Sex' => 'F',
};
Run Code Online (Sandbox Code Playgroud)
我打印到xml文件.但是,当我将此数组打印到xml文件时,我得到:
<Record Address=Home DOB=01/01/1990 Name=Bob Sex=M />
Run Code Online (Sandbox Code Playgroud)
我喜欢有姓名,地址,DOB,性别.
<Record Name=Bob Address=Home Sex=M DOB=01/01/1990 />
Run Code Online (Sandbox Code Playgroud)
按键或键值对数组进行排序也不会使值按正确的顺序排列.是否有一个简单的解决方案以所需的顺序打印哈希?
哈希明确无序.所以不,你做不到.维持秩序只有两种方式(a hash):
就像是:
my @fields = qw ( Name Address DOB Sex );
my @ordered_values = @hash{@fields};
Run Code Online (Sandbox Code Playgroud)
或者只是一个简单的:
foreach my $key ( @fields ) {
print "$key=$hash{$key} ";
}
Run Code Online (Sandbox Code Playgroud)
虽然,如果您正在使用XML ...可能有更好的方法来处理源数据,而不是首先将其填充到哈希中.
我会注意到 - 在编写XML时,通常不会在XML的内容中内联键值,而是作为属性(或子元素):
<Record Address="Home" DOB="01/01/1990" Name="Bob" Sex="M" />
Run Code Online (Sandbox Code Playgroud)
要么:
<Record>
<Address>Home</Address>
<DOB>01/01/1990</DOB>
<Name>Bob</Name>
<Sex>M</Sex>
</Record>
Run Code Online (Sandbox Code Playgroud)
因为通过这样做,您可以使用XML查询工具来匹配特定条件(如xpath).