我对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