|
Модераторы: korob2001, ginnie |
|
tishaishii |
|
||||
Создатель Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Давно связывался с этой темой. Помню, кажется, в Perl 5.8 можно было разыменовывать переменные my.
Сейчас сумел добиться разыменования только глобальных переменных и local:
Если выполнить`perl -MO=Deparse,-P 1.pl`, то на выходе получим:
Тот же эффект есть при последовательном объявлении переменных с помощью трёх операторов local. Объясните, почему $b можно объявить без указания пакета, а $c и $d обязательно с указанием пакета? |
||||
|
|||||
starikanisbackbaby |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.9.2018 Репутация: нет Всего: нет |
Очень просто.
В маршрутизации локальных пакетов в ядре компилятора Perl определяется двусторонними переменными 3-го уровня, входящие в изолированные паки дополнительных интеграций баз компилятора. Соответственно в данном случае непосредственно операторы local работают по данной схеме. |
|||
|
||||
tishaishii |
|
||||||
Создатель Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
А что если, по вопросу? Если не понятно, то почему-то нельзя объявить
Ещё раз вопрос. Чем провинились c и d, если для $b можно использовать текущий пакет? Это сообщение отредактировал(а) tishaishii - 9.9.2018, 07:19 |
||||||
|
|||||||
arto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
$b -- спецпеременная
|
|||
|
||||
tishaishii |
|
|||
Создатель Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
>> $b -- спецпеременная
Вы правы. Проверил: "local($e, $main::c, $main::d) = ('a', 'e', 'c');". Выводит ошибку: "Global symbol "$e" requires explicit package name (did you forget to declare "my $e"?)". Вот это ...здец. Нешто, до сих пор в Perl не разобрались с локализацией? Ну, используются какие-то $a и $b в sort, так я всегда думал, они дальше кода в sort не идут. Мдааа. Этот промах - источник ошибок. Это сообщение отредактировал(а) tishaishii - 12.9.2018, 19:35 |
|||
|
||||
arto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
они много где могут использоваться, на то они и специальные
|
|||
|
||||
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |