Разыменование массива хэшей в perl. экспериментальное предупреждение - PullRequest
0 голосов
/ 17 октября 2019

Я получаю предупреждение при доступе к моему массиву. Вероятно, это неправильный способ зацикливания, но я учу себя perl и пробую разные сценарии. Я могу перебрать %user, но не знаю, как перебрать хэш ref массива?

my %user;
$user{mike}{emp_id} = 1;
$user{john}{emp_id} = 2;
my @user = \%user;

foreach my $value_hash (@users)
{
   #error line
   foreach my $key (keys $value_hash) 
   { 
      foreach my $id (keys %{ $users{$key} }) 
      {
         print "name: $key\t$id: $users{$key}{$id}\n";
      }
  }
  print "\n";
}

1 Ответ

2 голосов
/ 17 октября 2019

keys EXPR была экспериментальной функцией, которая уже была заброшена и удалена.

$ 5.22t/bin/perl -e'my $h = {}; keys $h;'
keys on reference is experimental at -e line 1.

$ 5.24t/bin/perl -e'my $h = {}; keys $h;'
Experimental keys on scalar is now forbidden at -e line 1.

Правильные способы использования keys - это

keys HASH
keys ARRAY

Заменить

keys $value_hash

с

keys %$value_hash

или

keys %{ $value_hash }

Вы уже правильно использовали его во второй раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...