2013-07-01 2 views
0

данные хранятся в @emailaddresses следующим образом:Разыменования в массиве хешей в Perl?

$VAR1 = { 'email' => '[email protected]' }; 
$VAR2 = { 'email' => '[email protected]' }; 
$VAR3 = { 'email' => '[email protected]' }; 
$VAR4 = { 'email' => '[email protected]' }; 

При печати @emailaddresses (печать @emailaddresses), он печатает HASH(0x...) вместо значений в массиве. Как распечатать значения?

+0

Что это печать адрес памяти, хэш, хранящийся в определенном элементе массива: 'HASH (0x ...)' Нижеприведенный ответ Хантера выполняет разыменование этой хэш-ссылки с помощью оператора '->'. – EMiller

+1

какой вы * хотите * печатать? который «ценит»? – ysth

ответ

1

Просто цикл через массив и распечатать «электронная почта» дорожим каждым адресам:

my @emailaddresses = ...; 

for my $addr (@emailaddresses) { 
    print $addr->{email}, "\n"; 
} 

еще лучше, оберните эту логику в функции:

sub print_email_addresses { 
    my @addresses = @_; 

    for my $addr (@addresses) { 
     print $addr->{email}, "\n"; 
    } 
} 
+0

Он работает чудесно. Спасибо. – ProgrammingIsHard

+0

ли обернуть его в функцию или нет, потому что многое зависит от того, что еще происходит, поэтому я бы не сказал «еще лучше» – ysth

+0

@ysth Я предполагаю, что вам может понадобиться печатать структуру данных несколько раз. –

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