объяснение $ logline {$ cod} {s1} = скалярные ключи% {$ valid {$ cod}}; - PullRequest
1 голос
/ 22 декабря 2011

На что направлен следующий Perl-код?

$logline{$cod}{s1} = scalar keys %{$valid{$cod}};

«Действительный» должен рассматриваться как хеш-код, а $ cod должен рассматриваться как ключ. Это верно?

что означает "s1" в левой руке, снова ключ?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

RHS

Получите значение %valid, проиндексированное $cod.

$valid{$cod}

Обрабатывайте это значение, как если бы оно было хеш-значением.

%{$valid{$cod}}

Получить список ключей этого хэш-кода.

keys %{$valid{$cod}}

Узнайте, сколько ключей в этом списке.

scalar keys %{$valid{$cod}}

(Это не так, как на самом деле работает, вместо этого keys, вызываемый в скалярном контексте, возвращает число, представляющее, сколько элементов было бы возвращено, если бы оно было в контексте списка.)


LHS

Хеш %logline индексируется $cod.

$logline{$cod}

Сам по себе хеш-реф, который индексируется как s1.

$logline{$cod}{s1}

Соберите все вместе

Значение первого сегмента сохраняется в позиции, указанной вторым

$logline{$cod}{s1} = scalar keys %{$valid{$cod}};
2 голосов
/ 22 декабря 2011

Хранит количество элементов в хэш-ссылке, на которые ссылается $ valid {$ cod}, в LHS.

"valid" should be treated as a hashref,

Нет, «valid» - это имя% valid хеша и $ valid {} обращается к одному из значений в хэше.

$ cod - ключ хеша в обоих местах."s1" также является хеш-ключом.

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