Что означает $x -> {_foo} -> {_bar} в Perl?

#perl

#perl

Вопрос:

Я пытаюсь понять скрипт на Perl, и я не понимаю одну строку объявления, которая:

 $pin =  $x -> {_foo} -> {_bar}
  

тогда как _bar — это переменная undef, объявленная в другом подразделе.

Комментарии:

1. Смотрите perldoc perlref для получения дополнительной информации о синтаксисе

2. _bar почти наверняка не является переменной. Это просто строка.

Ответ №1:

Ожидается, что значение $x будет ссылкой на хэш.

$x->{_foo} это значение элемента с ключом _foo хэша, на который ссылается $x .

Ожидается, что это значение будет ссылкой на хэш.

$x->{_foo}->{_bar} это значение элемента с ключом _bar хэша, на который ссылается $x->{_foo} .

Например, это вернуло бы 123 для следующего:

 my $x = {
   _foo => {
      _bar => 123,
   }
};