5

假设我使用以下关系

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

2 回答 2

6

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

假设您像这样调用子例程:

my $results = _relation();

->您将使用取消引用运算符访问元素:

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

如果您想将匿名哈希复制到一个命名哈希中,您可以使用

my %regular_hash = %$results;

有关更多信息,请参阅Perl 参考教程

于 2013-08-21T04:49:28.657 回答
4

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

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

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

$VAR1 = {
          'player3' => 0,
          'player2' => 1,
          'player1' => 0
        };
于 2013-08-21T05:00:15.737 回答