我对 Perl 有点陌生,这个错误让我困惑了几天。对于这个特定的问题,我很难在 Google 上找到任何东西。我会尽可能清楚地呈现“线索”。我正在使用 Perl v5.16.1。我的代码中的相关行是:
my %result = ();
...
$result{'TABLENAME'} = $tableName;
...
for my $i (1..$numberOfColumns) {
$result{$columnNames[$i-1]} = $columnValues[$i-1];
}
在我的测试中,$numberOfColumns
是 7。问题是 for 循环没有像我预期的那样创建键值对。我会解释。我尝试使用 Perl 的调试器和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 而不是什么都没有。有谁知道这里会发生什么?