Как мне скопировать массив, используя ссылку в Perl? - PullRequest
4 голосов
/ 12 февраля 2010

Если я сделаю следующее, все будет работать нормально:

print $ref->{element}->[0]->{data};

Я бы хотел посмотреть, сколько ссылок в массиве, чтобы я мог их просматривать, но мне трудно это делать.

Вот код, который я пробовал, но он не работает:

my @array = @$ref->{element};

foreach(@array) {
    print $_->{data};
}

Я получаю сообщение об ошибке «Не ссылка на массив»

Ответы [ 2 ]

8 голосов
/ 12 февраля 2010

Хэши списков довольно сложны. @$ref->{element} анализируется как (@$ref)->{element}, разыменование $ref вместо $ref->{element}.

Попробуйте

my @array = @{$ref->{element}}

или

my $size = scalar @{$ref->{element}}

подробности Гори в perllol .

0 голосов
/ 12 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...