2015-02-13 3 views
1

Новичок в Perl, поэтому я подозреваю, что есть простое решение, но я не вижу его, несмотря на обширный Googling.Perl - Итерация по массиву хешей Проблема

my @special_things = get_special_things(\@allThings); 

sub get_special_things { 
    my $things = shift; 
    my @specialThings; 

    foreach my $thing (@$things) { 
     if ($thing{special} == 1) { 
      push(@specialThings, $things); 
     } 
    } 
    return @specialThings; 
} 

Массив передаваемых через все массивы массивов хешей. Я получаю сообщение об ошибке в строке foreach, в которой говорится, что «Глобальный символ« вещь% »требует явного имени пакета».

Я знаю, что это связано с ссылкой на хеш-значение или ключ, но я нахожусь в убытке в минуту. Буду признателен за любую оказанную помощь.

+1

'$ thing {special}' означает элемент с ключом 'special' hash'% thing' – ikegami

ответ

5

У вас есть массив hashrefs, а не хешей. При работе с hashrefs вам необходимо использовать $thing->{special}.

Смежные вопросы