LINUX.ORG.RU

История изменений

Исправление Olegymous, (текущая версия) :

сознательное ССЗБ

В реальности код был подобного рода

my $hashref = {...};

for my $var ( $arrayref_of_hashrefs ) {
    my %hash = (
        # тут пару десятков ключей заполняется как из $hashref, так и из $var
        # обращаясь к разным уровням вложенности $hashref и $var
    );
}

Была получена ошибка Not a hash reference. Учитывая обилие ключей в %hash и обращение к разному уровню вложенности при обращении к двум переменным было совершенно неочевидно где именно проблема.

По итогу выяснилось, что автор забыл разыменовать $arrayref_of_hashrefs.

for my $var ( @$arrayref_of_hashrefs ) {

Исправление Olegymous, :

сознательное ССЗБ

В реальности код был подобного рода

my $hashref = {...};

for my $var ( $arrayref_of_hashrefs ) {
    my %hash = (
        # тут пару десятков ключей заполняется как из $hashref, так и из $var
        # обращаясь к разным уровням вложенности $hashref и $var
    );
}

Была получена ошибка Not a hash reference. Учитывая обилие ключей в %hash и обращение к разному уровню вложенности при обращении к двум переменным было совершенно неочевидно где именно проблема.

По итогу выяснилось, что автор забыл разыменовать $arrayref_of_hashrefs.

for my $var ( @$arrayref_of_hashrefs ) {

Исходная версия Olegymous, :

В реальности код был подобного рода

my $hashref = {...};

for my $var ( $arrayref_of_hashrefs ) {
    my %hash = (
        # тут пару десятков ключей заполняется как из $hashref, так и из $var
        # обращаясь к разным уровням вложенности $hashref и $var
    );
}

Была получена ошибка Not a hash reference. Учитывая обилие ключей в %hash и обращение к разному уровню вложенности при обращении к двум переменным было совершенно неочевидно где именно проблема.

По итогу выяснилось, что автор забыл разыменовать $arrayref_of_hashrefs.

for my $var ( @$arrayref_of_hashrefs ) {