Me pregunto, ¿-MO=Deparse
le muestra todas las optimizaciones de Perl, y por qué no se dobla en Perl 5.10?¿Cómo funciona O = Deparse y tiene Perl y doblar matrices constantes?
$ perl -MO=Deparse -e'[qw/foo bar baz/]->[0]'
['foo', 'bar', 'baz']->[0];
-e syntax OK
Algunos pensaban que en el IRC O=Deparse
no podría estar mostrando todo, pero sin duda alguna muestra de constantes.
$ perl -MO=Deparse -e'use constant "foo" => "bar"; foo'
use constant ('foo', 'bar');
'???';
-e syntax OK
mismo resultado si yo escribo de manera explícita la sub constante. Aunque es predecible, también es bastante interesante que la documentación en constant.pm
crea una lista de constante en lugar de matriz constante. Supongo que no solo no se pliega como constantes escalares sino que requiere la sobrecarga de crear una nueva matriz en cada invocación.
$ perl -MO=Deparse -e'use constant foo => qw/foo bar baz/; (foo)[0]'
use constant ('foo', ('foo', 'bar', 'baz'));
(foo)[0];
-e syntax OK
La única conclusión que puedo llegar a es -MO=Deparse
está mostrando todo el plegado y matrices constantes no están optimizados en Perl? ¿Es esto así? ¿Hay alguna razón técnica para ello?
Todavía estoy confundido, ¿por qué estoy recibiendo un downvoted por esto? Alguien déjame una línea. ¿Es porque la pregunta es demasiado esotérica? ¿Crees que implicará mucho trabajo para cualquier ganancia? Solo estaba preguntando si se podía hacer, y por qué no se hizo. La [respuesta principal] (http://stackoverflow.com/questions/3561210/how-does-odeparse-work-and-does-perl-have-and-fold-constant-arrays/3561323#3561323) parece pasar por las mismas preguntas que estoy preguntando (1) Supongamos que no se puede hacer por razones técnicas (2), luego supongamos que simplemente no se hace, (3) luego especulemos que no está hecho porque no importa lo suficiente. –