2013-07-01 39 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我想你可能想要多次打印一个数据结构。 –