[Moscow.pm] Копирование магии 1 раз

Гришаев Анатолий agrishaev на gmail.com
Вт Июн 21 02:26:15 PDT 2016


Еще нужно перехватывать  aassign в дополнении к  sassign, anonhash,
anonarray.
($a,$b) = ($w,$q)
@abc = ($w,$q)
%abc = ($w,$q)

21 июня 2016 г., 11:28 пользователь Warstone на list.ru <warstone на list.ru>
написал:

> Вообще говоря, так можно, да... Правда после этого пропадает вообще вся
> лаконичность записи и тогда уж лучше перехватывать те 3 опа, о которых было
> сказано выше.
> То есть такая запись выглядит еще хуже, чем определение хеша и навешивание
> магии "потом", ИМХО.
>
>
> Вторник, 21 июня 2016, 10:22 +03:00 от Гришаев Анатолий <
> agrishaev на gmail.com>:
>
>
> 1) Что типа:
>       a) $var = deep_hash_magic( q => $w, ... )
>       b) $var = deep_array_magic( $w0, $w1, ... )
>       c) Если нужны многоуровневые хэши, то включаем рекурсию
>              dhm( q=> dhm(r1=> $w1, q2=>  $w2) )
>       d) можно делать перехват синтаксического вызова процедуры и
> проанализировать аргументы во время компиляции этого вызова, заменить их на
> свои и
>           наблюдать счастье, если конечно есть "железные" яйца.
>
>
> 20 июня 2016 г., 17:52 пользователь Warstone на list.ru <warstone на list.ru>
> написал:
>
> 1) А запись для Хеша можно показать?...
> $var = {
>   q => 'w'
> };
>
> magic($var->{q});
>
> 2) Это не то ))
>
> 3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать
> $var = magic(...);
>
>
> Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий <
> agrishaev на gmail.com>:
>
>
> Дико не понятно, что собственно хочется:
>
> Я иногда делаю так:
> 1) magic( $var = 1)
> 2) tie $var, tied($some_other_var)->clone()
> 3) А зачем нам вообще магию копировать?
>
> 20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy <evgeniy на just4i.ru>
> написал:
>
> Коль, а ты можешь рассказать про оригинальную постановку задачи? просто
> задача звучит так, что перехват опов будет проще чем любой другой путь)
>
>
>
> Отправлено с Mi Phone
> "Warstone на list.ru" <warstone на list.ru> | От: 20 июня 2016 г. 15:04 |
> Сообщение:
>
> Может кто уже реализовывал...
>
> Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей
> реализации задается магия через
> $var = 1;
> magic($var);
>
> Это неудобно. Хочется так: $var = magic(); Но так не работает, так как
> svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign
> ее скопируют без магии. Вернее не так... Если туда передать другую
> магическую переменную, то на ней опять-таки позовется svt_get и будет
> бесконечный цикл.
>
> Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает -
> какие еще опы надо перехватывать и это уже совсем из области черной магии.
>
> Может быть кто-то сталкивался с похожей задачей копирования магии?..
>
>
> --
> Nick unnoun
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20160621/adb00541/attachment.html>


Подробная информация о списке рассылки Moscow-pm