<HTML><BODY>Вообще говоря, так можно, да... Правда после этого пропадает вообще вся лаконичность записи и тогда уж лучше перехватывать те 3 опа, о которых было сказано выше.<br>То есть такая запись выглядит еще хуже, чем определение хеша и навешивание магии "потом", ИМХО.<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Вторник, 21 июня 2016, 10:22 +03:00 от Гришаев Анатолий <agrishaev@gmail.com>:<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_14664937750000000447_BODY"><div dir="ltr"><div><div><div>1) Что типа:<br>      a) $var = deep_hash_magic( q => $w, ... )<br></div>      b) $var = deep_array_magic( $w0, $w1, ... )<br></div>      c) Если нужны многоуровневые хэши, то включаем рекурсию<br></div><div>             dhm( q=> dhm(r1=> $w1, q2=>  $w2) )<br></div><div>      d) можно делать перехват синтаксического вызова процедуры и проанализировать аргументы во время компиляции этого вызова, заменить их на свои и <br></div><div>          наблюдать счастье, если конечно есть "железные" яйца.<br><br></div><div>                  <br></div><div><div><div><div><div><div><div><div><div><div>20 июня 2016 г., 17:52 пользователь <a href="mailto:Warstone@list.ru">Warstone@list.ru</a> <span dir="ltr"><<a href="mailto:warstone@list.ru">warstone@list.ru</a>></span> написал:<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>1) А запись для Хеша можно показать?...<br>$var = {<br>  q => 'w'<br>}; <br></div></blockquote><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>magic($var->{q});<br><br>2) Это не то ))<br><br>3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать<br>$var = magic(...);<br><br><br><blockquote style="border-left:1px solid #0857a6;margin:10px;padding:0 0 0 10px">
        Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий <<a href="mailto:agrishaev@gmail.com">agrishaev@gmail.com</a>>:<div><div><br>
        <br>
        <div>


















        










<div>
        
        <div>
                
                
            <div><div dir="ltr"><div><div><div><div>Дико не понятно, что собственно хочется:<br><br></div>Я иногда делаю так:<br></div>1) magic( $var = 1)<br></div>2) tie $var, tied($some_other_var)->clone()<br></div>3) А зачем нам вообще магию копировать? <br></div><div><br><div>20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy <span dir="ltr"><<a>evgeniy@just4i.ru</a>></span> написал:<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Коль, а ты можешь рассказать про оригинальную постановку задачи? просто задача звучит так, что перехват опов будет проще чем любой другой путь)<br>
</div><div dir="ltr"><br>
</div><div dir="ltr"><br>
</div><div dir="ltr"><br>
</div><div>Отправлено с Mi Phone</div><div>"<a>Warstone@list.ru</a>" <<a>warstone@list.ru</a>> | От: 20 июня 2016 г. 15:04 | Сообщение:<br type="attribution"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p></p>
<div>Может кто уже реализовывал...<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><span><font color="#888888"><br>-- <br>Nick unnoun</font></span></div>
</blockquote></div><br>--<br>
Moscow.pm mailing list<br>
<a>moscow-pm@pm.org</a> | <a rel="noreferrer">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>
</div>
            
                
                    <div>-- <br>
Moscow.pm mailing list<br>
<a>moscow-pm@pm.org</a> | <a>http://moscow.pm.org</a><br>
</div>
                
             
        
                
        </div>

        
</div>


</div>
</div></div></blockquote>
<br></div>
<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>
<br></blockquote></div><br></div></div></div></div></div></div></div></div></div></div>
</div>
            
                
                    <div>-- <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>