Как может я обходить дерево YAML с YAML Perl:: Крошечный?

В первом выстреле я мог придумать что-то вроде этого (но это - псевдо код и предположение, что Вы не можете использовать.NET встроенный libaries). Мог бы потребовать небольшого количества тонкой настройки и пересмотра прежнего мнения, но должен быть достаточно хорошим для преимущества, возможно?

int findString(String var, String[] stringArray, int currentIndex, int stringMaxIndex)
    {
    if currentIndex > stringMaxIndex 
       return (-stringMaxIndex-1);
    else if var==arr[currentIndex] //or use any string comparison op or function
       return 0;
    else 
       return findString(var, stringArray, currentIndex++, stringMaxIndex) + 1 ;
    }



    //calling code
    int index = findString(var, arr, 0, getMaxIndex(arr));

    if index == -1 printOnScreen("Not found");
    else printOnScreen("Found on index: " + index);
6
задан brian d foy 12 August 2009 в 16:35
поделиться

2 ответа

Попробуйте

print "$_\n" for keys %{ $configuration->[0] };

Вы должны принудительно преобразовать элемент массива « $ configuration -> [0] » в хэш-ссылку с помощью «% {...} »

Итак, чтобы перебрать их:

for my $key ( keys %{ $configuration->[0] } ){
  my $value = $configuration->[0]{$key};

  print "$key => $value\n";
}
6
ответ дан 10 December 2019 в 02:51
поделиться

YAML :: Tiny создает довольно сложную структуру данных:

ссылка на массив полный ссылок на хеши полный ссылок на массивы полный ссылок на хеши ....

когда $ a - ссылка на массив, вы получаете доступ ко всему массиву как @ $ a и элементы как $$ a [0], $$ a [1], ... или как $ a -> [0], $ a -> [1]

, когда $ b является ссылкой на хэш, вы получаете доступ ко всему хешу как % $ b и элементы как $ $ b {'somekey'}, $$ b {'somekey'}, .... или как $ b -> {'somekey'}, $ b -> {'somekey'}

, когда $ configuration является ссылкой на массив, полный ссылок на хэши вы получаете доступ ко всему массиву как @ $ configuration , первый элемент как $ конфигурация -> [0] . Вы можете просто скопировать это в другую переменную

$firstconfig = $configuration->[0]

, а затем получить доступ ко всему хешу как

%$firstconfig

, но если вы хотите сделать это за один раз, вам придется написать довольно хитрый

%{ $configuration->[0] }

Я думаю, что это одна из вещей, которые был удален для Perl 6.

3
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: