在Perl中将哈希中的所有值相乘?

dgB*_*gBP 0 perl hash multiplication key-value

我想将哈希的所有值相乘而不必调用特定元素.例如:I DO NOT想要做的$hash{'kv1'} * $hash{'kv2'} * $hash{'kv3'},因为我不知道在哈希表元素做这个数.

我猜这里有一个简单而有效的功能,可能是使用each或者其他东西,但我找不到任何可以遵循的例子.有任何想法吗?

Que*_*tin 9

从1开始(因为1乘以任何东西就是你所乘的那个),然后循环哈希值,并将当前总值乘以哈希值.

#!/usr/bin/env perl

use v5.12;
my %hash = ( a => 1, b => 2, c => 3, d => 4 );
my $value = 1;
$value = $value * $_ foreach values %hash;
say $value;
Run Code Online (Sandbox Code Playgroud)


mem*_*owe 9

这就是List :: Util减少目的:

use List::Util 'reduce';

my %hash = (foo => 3, bar => 7, baz => 2);

say reduce { our $a * our $b } values %hash;
Run Code Online (Sandbox Code Playgroud)

输出:

42