我對Perl有點新,而且這個錯誤讓我困惑了幾天。我很難在Google上找到任何具體問題。我會盡可能清楚地呈現「線索」。我正在使用Perl v5.16.1。在我的代碼中的相關行是這些:添加到Perl哈希產生令人費解的結果
my %result =();
...
$result{'TABLENAME'} = $tableName;
...
for my $i (1..$numberOfColumns) {
$result{$columnNames[$i-1]} = $columnValues[$i-1];
}
在我的測試,$numberOfColumns
爲7的問題是,for循環如我所料不創建鍵值對。我會解釋。我試過用perl -d
的調試器來調試。下面的調試器輸出顯示直到最後一行爲止。
DB<2> c 219
testcode::testsub(modules/testcode.pm:219):
219: $result{'TABLENAME'} = $tableName;
DB<3> c 239
testcode::testsub(modules/testcode.pm:239):
239: for my $i (1..$numberOfColumns) {
DB<4> p %result
TABLENAMEmyowntableitis
DB<5> p $result{TABLENAME}
myowntableitis
DB<6> s
testcode::testsub(modules/testcode.pm:240):
240: $result{$columnNames[$i-1]} = $columnValues[$i-1];
DB<6> p $i
1
DB<7> p $columnNames[0]
id
DB<8> p $columnValues[0]
1
DB<9> s
testcode::testsub(modules/testcode.pm:240):
240: $result{$columnNames[$i-1]} = $columnValues[$i-1];
DB<9> p $i
2
DB<10> p %result
TABLENAMEmyowntableitisid
1
DB<11> p $result{TABLENAME}
myowntableitis
DB<12> p $result{id}
DB<13>
我預計最後p $result{id}
返回1而不是沒有。有誰知道這裏會發生什麼?
給我們,實際上產生的問題代碼! !或者至少,給出'use Data :: Djmper的輸出; {local $ Data :: Dumper :: Useqq = 1;打印(Dumper(\ @ columnNames,\ @columnValues)); }'。最佳猜測,'$ columnNames [0] ne「id」'。 – ikegami