|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.04.2017, 12:31 | #1 |
Новичок
Джуниор
Регистрация: 26.04.2017
Сообщений: 2
|
Неизвестная мне структура ${"CG_ID".$i}
Нужно изменить чужой код. Внезапно столкнулся вот с такой структурой.
${"CG_ID".$i} = $AllCGsIDs[$ii]{"ID"}; - так делают инициализацию. Этот CG_ID используют как глобальный массив, судя по использованию. Но Dumper его не печатает, передать его в функцую не получается. Только использовать вот в такой вот форме. Что это такое, как оно называется и как с ним работать? Спасибо. Последний раз редактировалось kkonstant; 26.04.2017 в 12:34. |
27.04.2017, 14:12 | #2 |
Форумчанин
Регистрация: 16.06.2015
Сообщений: 100
|
Слева начальный символ $-признак скалярной переменной,далее должно идти её имя. Вместо имени -блок,то есть выражение внутри блока интерпретируется как ссылка.Происходит разыменование ссылки.
Справа мы имеем разыменование ссылки на массив хэшей(Array of Hashes,AoH) Опубликуйте ваш код целиком. Наличие любой ссылки можно проверить функцией ref() Последний раз редактировалось svsh2016; 27.04.2017 в 16:18. |
30.04.2017, 17:21 | #3 |
Новичок
Джуниор
Регистрация: 26.04.2017
Сообщений: 2
|
Да справа обычный массив хешей, а вот то что слева очень непонятно.
Я хочу перестать в этой программе вообще пользоваться глобальными переменными, но не знаю как эту конструкцию начать отправлять в функции. Инициализация её выглядит так. my @AllCGsIDs = REST_GetAllCGsIDs(); // содержит массив хешей всех существующих имён и их ID $AllCGsIDsRecords = scalar(@AllCGsIDs); my @CG_Name = ("CG001","CG002","CG003");#содер жит имена, которые будут в последствии обработаны. for (my $i=1; $i<$AllCGsIDsRecords; $i++) { for (my $ii=0; $ii<=$AllCGsIDsRecords-1; $ii++){ if ($CG_Name[$i] eq $AllCGsIDs[$ii]{"Name"}) { ${"CG_ID".$i} = $AllCGsIDs[$ii]{"ID"}; } } } |
15.05.2017, 18:40 | #4 |
Форумчанин
Регистрация: 16.06.2015
Сообщений: 100
|
Добавлю к своему предыдущему сообщению(не посмотрел,что Вы ответили): у Вас слева от знака равенства происходит
разыменование символической ссылки $link_1 (в фигурных скобках(блоке) имеются кавычки): Код:
${link_1} В результате слева от знака равенства мы получаем ,например для индекса1 (аналогично для остальных индексов в цикле) $CG_ID1= Справа от знака равенства Вам все понятно Советую посмотреть для справки библию "Программирование на Perl" Том Кристиансен,брайан д фой,Ларри Уолл,Джон Орвант,2014,с359-361 |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" | Бахтиёр1916 | Windows | 1 | 05.04.2017 12:53 |
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") | ZIRASS | PHP | 4 | 15.06.2016 14:23 |
Как вставить кнопку "Поделится" или "мне нравится" в phpbb3 | borecc | PHP | 1 | 07.03.2011 13:44 |
"а" и "б" не хотят посчитаться, помогите мне их посчитать) | Лука | Microsoft Office Excel | 5 | 10.12.2010 02:43 |