【发布时间】:2022-01-19 16:41:36
【问题描述】:
我有哈希数组,需要迭代并打印序列中的值 - 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";
}
【问题讨论】:
-
for $fields qw(id name mail)?如果您知道所需的键顺序,那么您可以指定它。 -
@SilvioMayolo:谢谢,那行得通。但是打印逗号
,时出现问题。 -
我在循环中添加了条件 -
print "," if($fields ne 'mail'); -
解决此问题的一种方法是不使用哈希。如果您只有 3 个字段,则最好使用数组作为值。
-
@Silvio Mayolo 那应该是
for $fields (qw(id name mail))。曾经允许for $fields qw(id name mail)的错误,但很久以前就已修复。