http://search.cpan.org/~rjbs/perl-5.24.0/lib/overload.pm#Overloadable_Operations
  

Simple assignment is not overloadable (the  '=' key is used for the  "Copy 
Constructor" ).

Был тут. Всмысле на оверлоад тоже смотрел.

>Понедельник, 20 июня 2016, 16:52 +03:00 от Dmitry Karasik 
><[email protected]>:
>
>On Mon, Jun 20, 2016 at 03:02:47PM +0300,  [email protected] wrote:
>>  Может кто уже реализовывал...
>> 
>> Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей 
>> реализации задается магия через
>> $var = 1;
>> magic($var);
>> 
>> Это неудобно. Хочется так: $var = magic(); Но так не работает, так как 
>> svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign 
>> ее скопируют без магии. Вернее не так... Если туда передать другую 
>> магическую переменную, то на ней опять-таки позовется svt_get и будет 
>> бесконечный цикл.
>> 
>> Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - 
>> какие еще опы надо перехватывать и это уже совсем из области черной магии.
>> 
>> Может быть кто-то сталкивался с похожей задачей копирования магии?..
>
>Я как-то рылся и уперся в эту же проблему, все источники говорят с один голос 
>что магия не копируется.
>Обошел по другому, вообще без магии, оверлоадом. Вот и Variable::Magic делает 
>это в два захода.
>Но может быть прокатит нечто вроде такого?
>
>   use Variable::Magic qw(wizard cast);
>   my $w = wizard(...);
>   use overload '=' => sub { cast $_[0], $w };
>
>-- 
>Sincerely,
>Dmitry Karasik
>
>-- 
>Moscow.pm mailing list
>[email protected] |  http://moscow.pm.org

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить