Разбор Perl-массива - PullRequest
       25

Разбор Perl-массива

0 голосов
/ 25 ноября 2011

Я не знаком с Perl и пытаюсь отредактировать скрипт перевода irssi.Результат веб-запроса возвращается как:

$result = {
 "data" => {
  "translations" => [
   {
    "translatedText" => "Halloween"
   }
  ]
 }
}

Как получить только часть переведенного текста, так что

$string = 'Halloween'

Спасибо.

Ответы [ 2 ]

7 голосов
/ 25 ноября 2011

«Хэллоуин» может быть получен как:

$result->{"data"}->{"translations"}->[0]->{"translatedText"}

Стрелки после первой можно опустить, поэтому еще более короткий вариант будет:

$result->{"data"}{"translations"}[0]{"translatedText"}

В основном у вас естьмножественные косвенные ссылки на разных уровнях:

  • ссылка на хеш
  • его ключ "data" является ссылкой на другой хеш
  • ключ "translations" последнегохеш является ссылкой на массив
  • первый элемент этого массива является ссылкой на хеш
  • ключом translationText этого хеша является строка
2 голосов
/ 25 ноября 2011

Это было бы

$result->{data}->{translations}->[0]->{translatedText};

$result - ссылка на хеш.Ключ 'data' указывает на еще одну ссылку на хеш, которая имеет ключ 'translations', указывающий на ссылку на массив.Первый и единственный элемент в этом массиве ref имеет ключ translationText, который указывает на интересующие данные: «Halloween».

...