我有哈希数组,需要迭代并打印序列中的值 - id,name,mailid。
但是当我打印按键的内容时,它一直在打乱。如何打印如下内容:
ID,NAME,EMAIL
vkk,Victor,vkk@test.com
smt,Smith,smt@test.com
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
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";
}
Run Code Online (Sandbox Code Playgroud)
的文档是keys()这样说的:
哈希条目以明显随机的顺序返回。
因此,如果您想按特定顺序提取数据,那么您应该指定该顺序。
for $content (@data){
for $fields (qw(id name mail)) {
print $content->{$fields}.",";
}
print "\n";
}
Run Code Online (Sandbox Code Playgroud)
或者使用哈希切片来简化代码:
for $content (@data) {
print join(',', @{$content}{qw(id name mail)}), "\n";
}
Run Code Online (Sandbox Code Playgroud)