Perl Join со ссылкой на массив

Я новичок в Perl.

Я пытаюсь использовать соединение со ссылкой на массив, но это не работает.

Вот мой код

my $arr = {
     'items' => ('home', 'chair', 'table')
};

my $output = join(',', $arr->{'items'});

print $output;

Это печать

table

вместо

home,chair,table

Может ли кто-нибудь помочь мне в этом отношении?

1 ответ

Решение

В Perl парены не создают массивы. Они только когда-либо сортируют приоритет. Хешреф

{ 'items' => ('home', 'chair', 'table') }

такой же как

{ 'items' => 'home', 'chair' => 'table' }

Если вы хотите поместить массив в хеш, вам нужно использовать arrayref, который вы можете создать с помощью [ ... ]:

my $hash = { 'items' => ['home', 'chair', 'table'] }

Теперь, если вы запустите свой код, вы получите что-то вроде

ARRAY(0x1234567)

в качестве вывода. Это способ распечатки ссылок. Нам нужно разыменовать его, чтобы объединить элементы. Мы можем сделать это с @{ ... } оператор разыменования массива. Затем:

print join(',', @{ $hash->{items} }), "\n";

Чтобы узнать больше о ссылках и сложных структурах данных в Perl, прочитайте

Другие вопросы по тегам