2013-08-21 46 views
5

假设我用,比如,下面的关系Perl:数据结构,这是一个散列吗?

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

回答

6

这个子程序返回哈希参考(指向一个哈希值。)在这种方式下使用大括号构建一个匿名的哈希,并返回对它的引用。

假设你调用子程序是这样的:如果你想匿名哈希复制到一个名为

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

my $results = _relation(); 

你会访问使用->对其操作的元素,您可以立即解除整个事件的处理

my %regular_hash = %$results; 

有关更多信息,请参阅Perl References Tutorial

4

friedo的回答是正确的。当试图理解数据结构时,使用Data :: Dumper会很有帮助。

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

的{}的输出显示,这是一个匿名散列:

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