Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 26.04.2017, 13:31   #1
kkonstant
Новичок
 
Регистрация: 26.04.2017
Сообщений: 2
Репутация: 10
По умолчанию Неизвестная мне структура ${"CG_ID".$i}

Нужно изменить чужой код. Внезапно столкнулся вот с такой структурой.
${"CG_ID".$i} = $AllCGsIDs[$ii]{"ID"}; - так делают инициализацию.
Этот CG_ID используют как глобальный массив, судя по использованию. Но Dumper его не печатает, передать его в функцую не получается. Только использовать вот в такой вот форме. Что это такое, как оно называется и как с ним работать?
Спасибо.

Последний раз редактировалось kkonstant; 26.04.2017 в 13:34.
kkonstant вне форума   Ответить с цитированием
Старый 27.04.2017, 15:12   #2
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 79
Репутация: 24
По умолчанию

Слева начальный символ $-признак скалярной переменной,далее должно идти её имя. Вместо имени -блок,то есть выражение внутри блока интерпретируется как ссылка.Происходит разыменование ссылки.
Справа мы имеем разыменование ссылки на массив хэшей(Array of Hashes,AoH)
Опубликуйте ваш код целиком.
Наличие любой ссылки можно проверить функцией ref()

Последний раз редактировалось svsh2016; 27.04.2017 в 17:18.
svsh2016 вне форума   Ответить с цитированием
Старый 30.04.2017, 18:21   #3
kkonstant
Новичок
 
Регистрация: 26.04.2017
Сообщений: 2
Репутация: 10
По умолчанию

Да справа обычный массив хешей, а вот то что слева очень непонятно.
Я хочу перестать в этой программе вообще пользоваться глобальными переменными, но не знаю как эту конструкцию начать отправлять в функции. Инициализация её выглядит так.
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"};

}
}
}
kkonstant вне форума   Ответить с цитированием
Старый 15.05.2017, 19:40   #4
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 79
Репутация: 24
По умолчанию

Добавлю к своему предыдущему сообщению(не посмотрел,что Вы ответили): у Вас слева от знака равенства происходит
разыменование символической ссылки $link_1 (в фигурных скобках(блоке) имеются кавычки):

Код:

$link_1="CG_ID".i; #Символическая ссылка

Разыменующий префикс $ и фигурные скобки-это стандартные атрибуты для разыменования:
${link_1}
В результате слева от знака равенства мы получаем ,например для индекса1 (аналогично для остальных индексов в цикле)
$CG_ID1=
Справа от знака равенства Вам все понятно
Советую посмотреть для справки библию "Программирование на Perl" Том Кристиансен,брайан д фой,Ларри Уолл,Джон Орвант,2014,с359-361
svsh2016 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 13:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 15:23
Как вставить кнопку "Поделится" или "мне нравится" в phpbb3 borecc PHP 1 07.03.2011 14:44
"а" и "б" не хотят посчитаться, помогите мне их посчитать) Лука Microsoft Office Excel 5 10.12.2010 03:43




07:45.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru