以下のプログラムは、配列を取り、それを圧縮して、積が繰り返されないようにし、合計を合計する必要があります。
A B B C D A E F
100 30 50 60 100 50 20 90
なる:
A 150
B 80
C 60
D 100
E 20
F 90
以下のコードが実行され、私が望むように動作します。
#! C:\strawberry\perl\bin
use strict;
use warnings;
my @firstarray = qw(A B B C D A E F);
my @secondarray = qw (100 30 50 60 100 50 20 90);
my @totalarray;
my %cleanarray;
my $i;
# creates the 2d array which holds variables retrieved from a file
@totalarray = ([@firstarray],[@secondarray]);
my $count = $#{$totalarray[0]};
# prints the array for error checking
for ($i = 0; $i <= $count; $i++) {
print "\n $i) $totalarray[0][$i]\t $totalarray[1][$i]\n";
}
# fills a hash with products (key) and their related totals (value)
for ($i = 0; $i <= $count; $i++) {
$cleanarray{ $totalarray[0][$i] } = $cleanarray{$totalarray[0][$i]} + $totalarray[1][$i];
}
# prints the hash
my $x = 1;
while (my( $k, $v )= each %cleanarray) {
print "$x) Product: $k Cost: $cleanarray{$k} \n";
$x++;
}
しかし、ハッシュを印刷する前に、「Use of uninitialized value in addition (+)」というエラーが 6 回表示されます。Perl を初めて使用するので (これは教科書以外で初めての Perl プログラムです)、誰か教えてください。すべてを初期化したようです...