2016-06-22 4 views
0

У меня есть строки кода:не могу понять некоторые переменные

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

я понимаю $data скалярная и nav, performance_gross хеширования ключи. Но что такое 'current'?

+5

В этом случае одиночные кавычки вокруг 'current' являются необязательными. Это то же самое, что: '$ data -> {nav} -> {current} -> {performance_gross}'. Итак, «текущий» также является ключевым. – toolic

+1

эквивалентным доступом будет '$ data -> {nav} {current} {performance_gross}' – eballes

ответ

1

nav, 'current' и performance_gross являются выражениями, которые соответственно оценивают струнам nav, current и performance_gross. Эти три строки используются как ключи к различным хэшам.

Ниже эквивалентны:

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

Perl позволяет произвольные выражения для ключа в хэш-поиска:

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

(. Полученная строка используется в качестве хэш-ключа)

Однако, если только между { и } является простым идентификатором, это автоматически цитируется:

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

Вот почему вы часто можете опускать кавычки в хэш-ключах. Но по-прежнему справедливо явно указывать строковый литерал, и это означает одно и то же.

Смежные вопросы