2013-08-21 47 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 
     };