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

kdu*_*ubs 1 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));
Run Code Online (Sandbox Code Playgroud)

Hun*_*len 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
Run Code Online (Sandbox Code Playgroud)