私はPerlに少し慣れていませんが、このバグは2、3日間私を困惑させました。この特定の問題について、Googleで何かを見つけるのに苦労しました。「手がかり」をできるだけ明確に提示するように努めます。Perlv5.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を返すことを期待していました。誰かがここで何が起こっているのか考えていますか?