Perl:数据结构,这是一个哈希吗?

时间:2013-08-21 04:37:38

标签: perl

假设我使用了以下关系

sub _relation {
     +{
        player1   => 0,
        player2  => 1,
        player3    => 0,
      },
      ;
}
  1. 我应该如何打印或提取“player1”?
  2. 我应该如何打印或提取与“player2”相关的值?
  3. 这是什么类型的数据结构?哈哈?没有声明

2 个答案:

答案 0 :(得分:6)

此子例程返回散列引用(指向散列的指针。)以这种方式使用的大括号构造一个匿名散列并返回对它的引用。

假设你调用子程序是这样的:

my $results = _relation();

您可以使用->解除引用运算符访问元素:

$results->{player1}    # 0
$results->{player2}    # 1

如果要将匿名哈希值复制到命名哈希值,可以使用

立即取消引用整个事件。
my %regular_hash = %$results;

有关详情,请参阅Perl References Tutorial

答案 1 :(得分:4)

弗鲁多的回答是正确的。在尝试理解数据结构时,使用Data :: Dumper会很有帮助。

use Data::Dumper;
print Dumper(_relation());

输出中的{}显示这是一个匿名哈希:

$VAR1 = {
          'player3' => 0,
          'player2' => 1,
          'player1' => 0
        };