Я хочу написать небольшую функцию «DBQuery» в perl, чтобы у меня были однострочные строки, которые отправляют оператор SQL и получают обратно, и массив хэшей, то есть набор записей. Тем не менее, я сталкиваюсь с проблемой синтаксиса Perl (и, возможно, с какой-то странной ошибкой указателя / ссылки), которая мешает мне упаковать информацию из хэша, получаемого из базы данных. Пример кода ниже демонстрирует проблему.
Я могу получить данные "Джим" из хеша внутри массива с помощью следующего синтаксиса:
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";
}