在 Perl 中顺序打印散列键
Print hash keys sequentially in Perl
我有哈希数组,需要迭代并打印序列中的值 - id,name,mailid
。
但是当我打印键的内容时,它一直在乱序。如何打印如下内容:
ID,NAME,EMAIL
vkk,Victor,vkk@test.com
smt,Smith,smt@test.com
这是我的脚本:
my @data = (
{
'mail' => 'vkk@test.com',
'name' => 'Victor',
'id' => 'vkk'
},
{
'name' => 'Smith',
'mail' => 'smt@test.com',
'id' => 'smt'
}
);
print "ID,NAME,EMAIL\n"; #header
for $content (@data){
for $fields (keys %$content){
print $content->{$fields}.",";
}
print "\n";
}
keys()
的文档是这样说的:
Hash entries are returned in an apparently random order.
因此,如果您想以特定顺序提取数据,则应指定该顺序。
for $content (@data){
for $fields (qw(id name mail)) {
print $content->{$fields}.",";
}
print "\n";
}
或者使用哈希切片来简化代码:
for $content (@data) {
print join(',', @{$content}{qw(id name mail)}), "\n";
}
我有哈希数组,需要迭代并打印序列中的值 - id,name,mailid
。
但是当我打印键的内容时,它一直在乱序。如何打印如下内容:
ID,NAME,EMAIL
vkk,Victor,vkk@test.com
smt,Smith,smt@test.com
这是我的脚本:
my @data = (
{
'mail' => 'vkk@test.com',
'name' => 'Victor',
'id' => 'vkk'
},
{
'name' => 'Smith',
'mail' => 'smt@test.com',
'id' => 'smt'
}
);
print "ID,NAME,EMAIL\n"; #header
for $content (@data){
for $fields (keys %$content){
print $content->{$fields}.",";
}
print "\n";
}
keys()
的文档是这样说的:
Hash entries are returned in an apparently random order.
因此,如果您想以特定顺序提取数据,则应指定该顺序。
for $content (@data){
for $fields (qw(id name mail)) {
print $content->{$fields}.",";
}
print "\n";
}
或者使用哈希切片来简化代码:
for $content (@data) {
print join(',', @{$content}{qw(id name mail)}), "\n";
}