Perl从具有键和值的数组创建哈希

时间:2015-09-17 19:19:54

标签: perl hash

我有一个例子,说明我在下面尝试做什么。它有效,但我认为它会更好。我有一个数组,其中包含一个键和一个由冒号分隔的相同字符串中的值。我需要把它变成哈希。目前我使用split和temp数组。我觉得我可以解决这个问题,但我找不到语法。

#!/grid/common/bin/perl -w
my @row=("x:3", "y:4", "z:abc");
my %hash = map { my @x=split(":",$_); $x[0] => $x[1] } @row;
print("$_ : $hash{$_}\n") for(keys(%hash));

1 个答案:

答案 0 :(得分:6)

您可以简单地在您的键值对数组中映射拆分操作,并将该结果分配回哈希值。 perldoc -f split返回一个列表,您可以直接将列表分配给哈希:

my @row = ("x:3", "y:4", "z:abc");
my %hash = map { split /:/ } @row; # outputs "x", "3", "y", "4", "z", "abc"
print("$_ : $hash{$_}\n") for(keys(%hash));
# output
# z : abc
# y : 4
# x : 3