2013-09-18 2 views
5

Я новичок в perl.perl Присоединиться к массиву ссылок

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

Вот мой код.

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

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

print $output; 

Он печатает

table 

вместо

home,chair,table 

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

ответ

16

В Perl, parens не создают массивы. Они только когда-либо разбираются в приоритете. Hashref

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

такая же, как

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

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

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

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

ARRAY(0x1234567) 

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

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

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

+0

Удивительный ответ со всеми деталями, в которых я нуждался. Спасибо, амон. :) – Sashwat

Смежные вопросы