当perl中的键相同时,连接哈希值

rah*_*hul 2 perl hash

我有一个类似的哈希:

abc=>1
hello=>32
abc=>4
hello=>23
hello=>12
xyz=>18
Run Code Online (Sandbox Code Playgroud)

我们如何连接其键相同的值.所以输出将是:

abc=>"1,4"
hello=>"23,12,32"
xyz=>"18".
Run Code Online (Sandbox Code Playgroud)

我尝试通过键排序哈希然后检查每个键,如果它们相同然后连接值,但我没有得到如何比较同一循环中的两个键.

提前致谢.

Bor*_*din 7

这种工作的确切方式取决于数据的真实来源,但是该程序显示了一种从DATA文件句柄中读取信息以构建和转储哈希的方法.

散列值是匿名数组,包含与同一个键对应的所有值.

use strict;
use warnings;

my %data;

while (<DATA>) {
  my ($k, $v) = /\w+/g;
  push @{ $data{$k} }, $v;
}

for my $k (sort keys %data) {
  printf "%s => %s\n", $k, join ',', @{ $data{$k} };
}

__DATA__
abc=>1
hello=>32
abc=>4
hello=>23
hello=>12
xyz=>18
Run Code Online (Sandbox Code Playgroud)

产量

abc => 1,4
hello => 32,23,12
xyz => 18
Run Code Online (Sandbox Code Playgroud)