То, что вы сделали неправильно, не удается use strict
. Включение ограничений сообщило бы вам, что начало строки
$data = { product1 => { part => $prod1part,
неявно создал новую переменную, $data
. Когда вы позже осмотрите %data
, вы ничего там не найдете - потому что вы спрятали это в другом месте, не заметив.
%data
и $data
- это разные переменные. Присвоение $data
не изменит %data
. Проверка %data
после изменения $data
вряд ли сделает то, что вы хотите.
Чтобы решить эту проблему, сначала добавьте
use strict;
use warnings;
вверху исходного файла; это, вероятно, спасет вас от многих будущих поездок в Stackoverflow. Затем выберите, какой из %data
или $data
оставить. Это, вероятно, не меняет то, что вы храните; сохранение $data
оказывает наименьшее влияние на исходный файл, поэтому вот как вы это сделаете:
- Заменить упоминания
%data
и \%data
на $data
.
Это должно поместить данные туда, где вы ожидаете их найти.
Для получения дополнительной информации о разнице между %data
и $data
см. perldoc perldata . Для получения информации о разнице между $data = {}
и %data = ()
см. perldoc perlreftut .