我有以下代码:
my $hhref = {'ancient' => {'Adam' => 'Eve',
'Antony' => 'Cleopatra'},
'modern' => {'Clyde' => 'Bonnie'}};
print "$hhref->{'ancient'}{'Antony'}\n";
打印出来:
REF(0x35c320)Cleopatra
我真的不明白为什么。为什么不打印Cleopatra
?
谢谢!
答案 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中的引号之外引用它们。