无法理解一些变量

时间:2016-06-22 18:16:55

标签: perl

我有一个代码行:

$data->{nav}->{'current'}->{performance_gross}

我理解$data是标量,navperformance_gross是哈希键。但是什么是'current'

2 个答案:

答案 0 :(得分:1)

nav'current'performance_gross是分别评估字符串navcurrentperformance_gross的表达式。这三个字符串用作不同哈希值的键。

以下都是等效的:

$data->{'nav'}->{'current'}->{'performance_gross'}
$data->{'nav'}{'current'}{'performance_gross'}
$data->{nav}->{current}->{performance_gross}
$data->{nav}{current}{performance_gross}

答案 1 :(得分:1)

Perl允许哈希查找中的键的任意表达式:

$hash{ arbitrary($code) . $here }

(结果字符串用作散列键。)

但是,如果{}之间的唯一标识是简单标识符,则会自动引用它:

$hash{ some_word }
# is equivalent to
$hash{ 'some_word' }

这就是为什么你经常可以省略哈希键中的引号。但是明确地将字符串文字放在那里仍然有效,这意味着同样的事情。