Perl: массив массивов, хеш массивов, хеш хешей, стек

Купить книгу по Perl на ОзонеПрограммисты на Perl должны уметь эффективно пользоваться сложными типами данных. В этой статье собраны наиболее полезные посты с сайта PerlMonks, и показаны примеры использования сложных типов данных. По идее, сведений в этой статье должно быть достаточно, но при необходимости можно перейти по ссылке на англоязычный сайт PerlMonks.

1. Массив массивов в Perl

Как определить массив массивов:

@tgs = (
    ['article series', 'sed & awk', 'troubleshooting', 'vim', 'bash'],
    ['ebooks', 'linux 101', 'vim 101', 'nagios core', 'bash 101' ]
);


Обратиться к отдельному элементу, к примеру ко второму элементу первого массива, можно так:

$tgs[0][1];

Обратиться к каждому элементу один за одним:

print @$_, "\n" foreach ( @tgs );

Подробности: How do I make an array of arrays?

2. Хеш хешей в Perl

Определяем хеш хешей:

%tgs = (
    'articles' =>  {
                       'vim' => '20 awesome articles posted',
                       'awk' => '9 awesome articles posted',
                       'sed' => '10 awesome articles posted'
                   },
    'ebooks'   =>  {
                       'linux 101'    => 'Practical Examples to Build a Strong Foundation in Linux',
                       'nagios core'  => 'Monitor Everything, Be Proactive, and Sleep Well'
                   }
);

Обратиться к отдельному элементу хеша:

print $tgs{'ebooks'}{'linux 101'};

Подробности: How do I make a hash of hashes?

3. Хеш массивов Perl

Хеш массивов можно определить так:

%tgs = (
    'top 5' =>  [ 'Best linux OS', 'Best System Monitoring', 'Best Linux Text editors' ],
    '15 example' => [ 'rpm command', 'crontab command', 'Yum command', 'grep command' ],
);

Обратиться ко всем элементам поочередно:

foreach my $key ( keys %tgs )  {
    print "Articles in group $key are: ";
    foreach ( @{$tgs{$key}} )  {
        print $_;
    }
}

Подробности: How do I make a hash of arrays?

4. Создаем стек Perl

Создать стек в Perl очень просто – нужно воспользоваться структурой “массив” и функциями push и pop.

Во-первых, определим массив вот так:

@array = ( 1, 2, 3, 4, 5 );

Операции со стеком:

push ( @array, 6 ); # помещает элемент 6 на верхушку стека.
pop ( @array );     # возвращает верхний элемент 6.

Подробности: How do I make a stack?

5. Визуализируем сложные типы данных Perl

При работе с кодом, работающим со сложными структурами данных, зачастую не обойтись без визуализации этих данных. В этих случаях можно воспользоваться модулем Dumper, как показано ниже:

use Data::Dumper;
print Dumper $ref;

Этот код отобразит структуру данных $ref в удобном для восприятия виде:

$VAR1 = {
          'a' => [
                   {
                     'A' => 1,
                     'B' => 2
                   },
                   {
                     'D' => [
                              4,
                              5,
                              6
                            ],
                     'C' => [
                              1,
                              2,
                              3
                            ]
                   }
                 ]
        };

Из этого вывода можно ясно видеть, где массив, где хеш, и зависимости между ними. Весьма удобно при отладке программ на Perl.

Подробности: How can I visualize my complex data structure?

Похожие статьи

Leave a Reply

Your email address will not be published. Required fields are marked *