Что означают фигурные скобки {} в этом объявлении переменной? - PullRequest
2 голосов
/ 13 января 2011

Я видел в каком-то коде объявление вроде:

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

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

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

Ответы [ 3 ]

11 голосов
/ 13 января 2011

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

%var это хеш

$var{$test} => $var{"test"} это хеш

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

$var{$test}{$test1}{"cnt"} => $var{"test"}{"tes2"}{"cnt"} - это массив

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

2 голосов
/ 13 января 2011

Нет, %var - это хеш.

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

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

0 голосов
/ 13 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...