2011-01-13 2 views
2

я видел в какой-то код декларации, как:В чем смысл {} фигурных скобок в объявлении этой переменной?

$test = "test"; 
$test1 = "tes2"; 
$i  = 2; 
$var{$test}{$test1}{"cnt"}[$i] = $var_val; # What exactly is this? 

Если они упоминают { скобку, то есть конкатенация. Я действительно не понимаю, что это.

Я предполагаю, что конечная переменная похожа на $vartesttest1cnt2.

+3

См. [Perlintro] (http://perldoc.perl.org/perlintro.html#Perl-variable-types): скаляры, массивы и хеши. – Benoit

+0

тоже, '.' - конкатенация. '($ test. $ test1)' is '" testtes2 "' – mkb

ответ

11

Ну, нет, не совсем. %var - хэш хешей хешей массивов.

%var хэш

$var{$test} =>$var{"test"} хэш

$var{$test}{$test1} =>$var{"test"}{"tes2"} хэш

=>$var{"test"}{"tes2"}{"cnt"} представляет собой массив

$var{$test}{$test1}{"cnt"}[$i]=$var_val присваивает $var_val индексу 2 в массиве

+0

'% var' - хэш! '$ var' не определено :) – mkb

+0

@Matt Kane, oops, исправлено это. –

+0

Вы небрежны с терминологией. '$ var {" test "}' не является хэшем. Это значение *, хранящееся в хеше для ключа «тест». Это может быть любой скаляр. Это происходит, пока мы не увидим '$ var {$ test} {...}', что мы знаем, что '$ var {$ test}' содержит хеш-ссылку *. –

0

Это многомерная структура данных. %var - хэш. $var{$test} - элемент хэша. $var{$test}{$test1} означает, что ваш хеш-элемент является ссылкой на другой хэш. означает, что $var{$test}{$test1} сам по себе является ссылкой на хэш. $var{$test}{$test1}{"cnt"}[$i] означает, что предыдущий уровень является ссылкой на массив. Не понимаю, что такое ссылка? Try perldoc.

+0

Попробуйте 'perldoc perlreftut' (справочное руководство),' perldoc perldsc' (кулинарная книга структур данных) и 'perldoc perlref' (полный рассказ о ссылках на Perl) –

2

No, %var is hash.

test является ключом к хешу.

$var{$test} становится $var{"test"}, который затем становится независимо от того, какое значение хранится в этом ключе, что было, по-видимому, еще одним хэшем. Его ключ $test1 приводит к другому хэшу, который имеет ключ cnt, который приводит к массиву, индекс которого $i (2) установлен в $var_val.

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