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, прочитайте
- а затем перлрефтут
- Perldsc.