在Perl中取消对哈希数组的引用?

在Perl中取消对哈希数组的引用?,perl,dereference,Perl,Dereference,数据存储在@emailaddresses中,如下所示: $VAR1 = { 'email' => 'abc@google.com' }; $VAR2 = { 'email' => 'cde@google.com' }; $VAR3 = { 'email' => 'efg@google.com' }; $VAR4 = { 'email' => 'hij@google.com' }; 当我打印@emailaddresses(打印@emailaddresses)时,它打印的是

数据存储在@emailaddresses中,如下所示:

$VAR1 = { 'email' => 'abc@google.com' };
$VAR2 = { 'email' => 'cde@google.com' };
$VAR3 = { 'email' => 'efg@google.com' };
$VAR4 = { 'email' => 'hij@google.com' };

当我打印@emailaddresses(打印@emailaddresses)时,它打印的是
HASH(0x…
,而不是数组中的值。如何打印这些值?

只需在数组中循环并打印出每个地址的“电子邮件”值:

my @emailaddresses = ...;

for my $addr ( @emailaddresses ) {
   print $addr->{email}, "\n";
}
更好的是,将此逻辑包装到函数中:

sub print_email_addresses {
   my @addresses = @_;

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

它所打印的是存储在数组特定元素中的散列的内存地址:
散列(0x…
下面的Hunter的答案使用
->
运算符执行该散列引用的解引用。您想打印什么?哪些“值”?是否将其包装在函数中有意义很大程度上取决于其他情况,因此我不会说“更好”,因为我想您可能会多次打印数据结构。