問題は、与えられた入力に各数字が現れる回数を数える Perl スクリプトです。各桁の合計とすべての合計の合計を出力します。
スクリプトは次のとおりです。
#!/usr/bin/perl
my $str = '654768687698579870333';
if ($str =~ /(.*)[^a]+/) {
my $substr = $1;
my %counts;
$counts{$_}++ for $substr =~ /./g;
print "The count each digit appears is: \n";
print "'$_' - $counts{$_}\n" foreach sort keys %counts;
my $sum = 0;
$sum += $counts{$_} foreach keys %counts;
print "The sum of all the totals is $sum\n";
}
私が得ている出力は次のとおりです。
The count each digit appears is:
'0' - 1
'3' - 2
'4' - 1
'5' - 2
'6' - 4
'7' - 4
'8' - 4
'9' - 2
The sum of all the totals is 20
しかし、私が得るはずの出力は次のとおりです。
The count each digit appears is:
'0' - 1
'3' - 3
'4' - 1
'5' - 2
'6' - 4
'7' - 4
'8' - 4
'9' - 2
The sum of all the totals is 21
どこが間違っていますか?助けてください。前もって感謝します