(a + b + c) * d = (a * d) + (b * d) + (c * d), так что вы можете сделать
my $value;
for my $key (keys %hash) {
for my $digit (split(//, $key)) {
$value += $digit * $hash{$key};
}
}
Но похоже, что вы былипытается:
my $value;
for my $key (keys %hash) {
my $sum;
$sum += $_ for split(//, $key);
$value += $sum * $hash{$key};
}
Более или менее то же самое:
use List::Util qw( sum );
my $value;
for my $key (keys %hash) {
$value += sum(split(//, $key)) * $hash{$key};
}