私はPerlで小さな「DBQuery」関数を書きたいので、SQLステートメントを送信して返信するワンライナーと、ハッシュの配列、つまりレコードセットを作成できます。ただし、Perl 構文の問題 (およびおそらく奇妙なポインター/参照の問題) に遭遇しているため、データベースから取得しているハッシュから情報をパックすることができません。以下のサンプル コードは、この問題を示しています。
次の構文を使用して、配列内のハッシュからデータ "Jim" を取得できます。
print $records[$index]{'firstName'}
「ジム」を返します
しかし、最初に配列内のハッシュ レコードを独自のハッシュ変数にコピーすると、不思議なことにそのハッシュ内のデータにアクセスできなくなります。
%row = $records[$index];
$row{'firstName'};
"" (空白) を返します
問題を示す完全なサンプル コードを次に示します。どんな助けでも大歓迎です:
my @records = (
{'id' => 1, 'firstName' => 'Jim'},
{'id' => 2, 'firstName' => 'Joe'}
);
my @records2 = ();
$numberOfRecords = scalar(@records);
print "number of records: " . $numberOfRecords . "\n";
for(my $index=0; $index < $numberOfRecords; $index++) {
#works
print 'you can print the records like this: ' . $records[$index]{'firstName'} . "\n";
#does NOT work
%row = $records[$index];
print 'but not like this: ' . $row{'firstName'} . "\n";
}