[Moscow.pm] динамическое создание конструкций вида $x->{y}

Maxim Vuets maxim.vuets на gmail.com
Чт Июн 18 13:20:11 PDT 2015


2015-06-18 22:06 GMT+02:00 Dmitry Ivanov <msk-pm на sadok.spb.ru>:
> Догадался, что надо сначала пробежаться и создать структуру. Что-то
> вроде
>
> $x->{y} = {};
> $x->{y}->{z} = {};
>
> а потом заполнить.

Вам уже дали правильный ответ, почему ваш первый вариант не работал.
Ваше предложение пробежать и создать структуру тоже верное, но в такой
форме избыточное. Perl автовивифицирует undef значения к запрошенному
виду, потому можно писать сразу:

$ perl -w -Mv5.22 -MDDP -E 'my $x; $x->{y}{z}{w} = 8; p $x'
{
  y => {
    z => {
      w => 8
    }
  }
}

Таким образом вам не нужно беспокоиться "сколько этих
$x->{y}->{z}......->{n} в итоге может получиться". Perl DWIM.


Подробная информация о списке рассылки Moscow-pm