Еще нужно перехватывать aassign в дополнении к sassign, anonhash, anonarray. ($a,$b) = ($w,$q) @abc = ($w,$q) %abc = ($w,$q)
21 июня 2016 г., 11:28 пользователь [email protected] <[email protected]> написал: > Вообще говоря, так можно, да... Правда после этого пропадает вообще вся > лаконичность записи и тогда уж лучше перехватывать те 3 опа, о которых было > сказано выше. > То есть такая запись выглядит еще хуже, чем определение хеша и навешивание > магии "потом", ИМХО. > > > Вторник, 21 июня 2016, 10:22 +03:00 от Гришаев Анатолий < > [email protected]>: > > > 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 пользователь [email protected] <[email protected]> > написал: > > 1) А запись для Хеша можно показать?... > $var = { > q => 'w' > }; > > magic($var->{q}); > > 2) Это не то )) > > 3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать > $var = magic(...); > > > Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий < > [email protected]>: > > > Дико не понятно, что собственно хочется: > > Я иногда делаю так: > 1) magic( $var = 1) > 2) tie $var, tied($some_other_var)->clone() > 3) А зачем нам вообще магию копировать? > > 20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy <[email protected]> > написал: > > Коль, а ты можешь рассказать про оригинальную постановку задачи? просто > задача звучит так, что перехват опов будет проще чем любой другой путь) > > > > Отправлено с Mi Phone > "[email protected]" <[email protected]> | От: 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 > [email protected] | http://moscow.pm.org > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
