Perl - 对散列哈希的引用

时间:2016-10-25 03:57:04

标签: perl hash

我有以下代码:

my $hhref = {'ancient' => {'Adam' => 'Eve',
                          'Antony' => 'Cleopatra'}, 
             'modern' => {'Clyde' => 'Bonnie'}};
print "$hhref->{'ancient'}{'Antony'}\n";

打印出来:

REF(0x35c320)Cleopatra

我真的不明白为什么。为什么不打印Cleopatra

谢谢!

1 个答案:

答案 0 :(得分:1)

根据您使用的perl版本和使用的操作系统,您将获得略有不同的结果。麻烦真的来自于print语句中的引号。如果您的代码是

my $hhref = {'ancient' => {'Adam' => 'Eve',
                      'Antony' => 'Cleopatra'}, 
         'modern' => {'Clyde' => 'Bonnie'}};
print $hhref->{'ancient'}{'Antony'};
print "\n";

然后它将正确打印。为什么?那么,perl很难理解你的意思。你的意思是“$ hhref”后跟“ - > {'ancient'} {'Antony'}”,或者你的意思是“$ hhref-> {'ancient'}”后跟“{'ancient'}” ,还是一起作为一个变量?在字符串之外,编译器是精确的,但在字符串中,它必须猜测你的意思,因为空格的使用方式不同,而不是像在代码中那样确定。

基本上,如果你想每次都正确地解释变量,那么在perl中的引号之外引用它们。