<HTML><BODY><a href="http://search.cpan.org/~rjbs/perl-5.24.0/lib/overload.pm#Overloadable_Operations">http://search.cpan.org/~rjbs/perl-5.24.0/lib/overload.pm#Overloadable_Operations</a> <br><br>Simple assignment is not overloadable (the <code>'='</code> key is used for the <a class="podlinkpod" href="http://search.cpan.org/%7Erjbs/perl-5.24.0/lib/overload.pm#Copy_Constructor" data-mce-href="http://search.cpan.org/%7Erjbs/perl-5.24.0/lib/overload.pm#Copy_Constructor">"Copy Constructor"</a>).<br><br>Был тут. Всмысле на оверлоад тоже смотрел.<br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Понедельник, 20 июня 2016, 16:52 +03:00 от Dmitry Karasik <dmitry@karasik.eu.org>:<br>
        <br>
        <div id="">


















        










<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
            <div id="style_14664313240000000903_BODY">On Mon, Jun 20, 2016 at 03:02:47PM +0300, <a href="mailto:Warstone@list.ru">Warstone@list.ru</a> wrote:<br>
>  Может кто уже реализовывал...<br>
> <br>
> Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей реализации задается магия через<br>
> $var = 1;<br>
> magic($var);<br>
> <br>
> Это неудобно. Хочется так: $var = magic(); Но так не работает, так как svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign ее скопируют без магии. Вернее не так... Если туда передать другую магическую переменную, то на ней опять-таки позовется svt_get и будет бесконечный цикл.<br>
> <br>
> Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - какие еще опы надо перехватывать и это уже совсем из области черной магии.<br>
> <br>
> Может быть кто-то сталкивался с похожей задачей копирования магии?..<br>
<br>
Я как-то рылся и уперся в эту же проблему, все источники говорят с один голос что магия не копируется.<br>
Обошел по другому, вообще без магии, оверлоадом. Вот и Variable::Magic делает это в два захода.<br>
Но может быть прокатит нечто вроде такого?<br>
<br>
   use Variable::Magic qw(wizard cast);<br>
   my $w = wizard(...);<br>
   use overload '=' => sub { cast $_[0], $w };<br>
<br>
-- <br>
Sincerely,<br>
        Dmitry Karasik<br>
<br>
-- <br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div>
            
        
                <base target="_self" href="https://e.mail.ru/">
        </div>

        
</div>


</div>
</blockquote>
<br></BODY></HTML>