下面的程序應該採用一個數組並對其進行壓縮,以便沒有重複的產品並將總計加起來,所以:這個Perl腳本爲什麼給我一個「使用未初始化的值(+)」錯誤
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++;
}
Howeve在打印散列之前,它給了我六次「使用未初始化的值(+)」錯誤「。作爲Perl的新手(這是我在教科書以外的第一個Perl程序),有人能告訴我爲什麼會發生這種情況嗎?好像我已經初始化一切...
你從來沒有初始化過@ cleanarray這個錯誤信息告訴你究竟是什麼問題。 –
我敢說你可能想看看[perldsc](http://perldoc.perl.org/perldsc.html),甚至可能是[perlstyle](http://perldoc.perl.org/perlstyle.html )。有一個乾淨的數據結構並適當地訪問它可以避免許多問題。 –
這段代碼應該已經死於錯誤'全局符號'%cleanarray'需要明確的包名稱......'。所以,你很難發佈你實際使用的代碼。 – TLP