perl - 数组中包含重复条目的数学

cfl*_*ach 0 perl

我有两个数组:

my @name = (bob, bob, dave, john, john, mary, mary, mary);
my @cost = (5, 7, 4, 4, 4, 6, 3 , 4);
Run Code Online (Sandbox Code Playgroud)

我想将它们映射在一起,所以输出就是:

bob 12
dave 4
john 8
mary 13
Run Code Online (Sandbox Code Playgroud)

数组的变化虽然所以我不能使用引用.我如何组@cost通过@name,并添加值@cost

tjd*_*tjd 6

一个更耗时的代码将消耗输入:

my %Cost_by_Name;
while (@name & @cost) {
    $Cost_by_Name{shift @name} += shift @cost;
}
Run Code Online (Sandbox Code Playgroud)

因为源数据不值得生存.