Я хочу написать небольшую функцию "DBQuery" в perl, поэтому у меня могут быть однострочные, которые отправляют SQL-запрос и получают обратно, и массив хэшей, т.е. набор записей. Однако я столкнулся с проблемой синтаксиса Perl (и, вероятно, некоторой нечетной проблемы с указателем/ссылкой), которая мешает мне упаковывать информацию из хеша, которую я получаю из базы данных. Пример кода ниже демонстрирует проблему.
Я могу получить данные "Jim" из хэша внутри массива с помощью этого синтаксиса:
print $records[$index]{'firstName'}
возвращает "Jim"
но если я сначала скопирую хэш-запись в массиве на свою собственную хэш-переменную, то я странно не могу получить доступ к данным больше в этом хеше:
%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";
}