Perl: Состав переменной хэшей

#file #perl #variables #hash

Вопрос:

Мне нужно проанализировать текстовый файл и собрать информацию воедино. Моя главная проблема заключается в этой структуре данных внутри внешнего текстового файла:

 # Text file 
$basket = [
          {
            'Apple' => 'red',
            'Banana' => 'yellow',
            'Grapes' => 'purple'
          },
];

print "$basket[0]{'Apple'}n";
 

Очевидно, я получаю сообщение об ошибке, так как это не массив и не хэш. Тем не менее мне нужно распечатать значения для моих ключей. Но это работает только при использовании моего собственного кода:

 # My input #
my %fruits = (
             'Apple' => 'red',
             'Banana' => 'yellow', 
             'Grapes' => 'purple');

print "$fruits{'Apple'}n";
 

Кто-нибудь знает, как получить доступ к значению «красный» при ссылке на текстовый файл.

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

1. Сначала вам нужно разыменовать ссылку на массив: $basket->[0]{Apple}

2. Вы забыли указать массив ( [] ).

Ответ №1:

То, что у вас есть, — это ссылка на массив, а не на массив. Поэтому вам нужно использовать дополнительный фрагмент синтаксиса (стрелку -> ), чтобы разыменовать его.

 $basket->[0]{Apple}
 

Дополнительные сведения см. в разделах perldoc perllol и perldoc perldsc.