Ich frage mich, zeigt -MO=Deparse
Ihnen alle Perl-Optimierungen, und warum wird dies nicht in Perl 5.10 gefaltet?Wie funktioniert O = Deparse, und hat Perl konstante Arrays?
$ perl -MO=Deparse -e'[qw/foo bar baz/]->[0]'
['foo', 'bar', 'baz']->[0];
-e syntax OK
im IRC Einige dachten, dass O=Deparse
vielleicht nicht alles, zeigen, aber es zeigt sicherlich eine gewisse Konstante Faltung.
$ perl -MO=Deparse -e'use constant "foo" => "bar"; foo'
use constant ('foo', 'bar');
'???';
-e syntax OK
gleiche Ergebnis, wenn ich ausdrücklich die konstante Unter schreiben. Obwohl vorhersehbar, ist es auch interessant, dass die Dokumentation in constant.pm
haben Sie eine Konstanten Liste anstelle einer Konstante Array erstellen. Ich nehme an, dass dies nicht nur wie skalare Konstanten gefaltet ist, sondern dass es den Aufwand erfordert, bei jedem Aufruf ein neues Array zu erstellen.
$ perl -MO=Deparse -e'use constant foo => qw/foo bar baz/; (foo)[0]'
use constant ('foo', ('foo', 'bar', 'baz'));
(foo)[0];
-e syntax OK
Die einzige Schlussfolgerung, die ich ist -MO=Deparse
kommen kann, ist alle die Faltung zeigt, und konstanten Arrays werden in Perl nur nicht optimiert heraus? Ist das so? Gibt es einen technischen Grund dafür?
Ich bin immer noch verwirrt, warum werde ich dafür downvoted? Jemand sagt mir Bescheid. Liegt es daran, dass die Frage zu esoterisch ist? Sie glauben, es wird zu viel Arbeit für jeden Gewinn führen? Ich habe nur gefragt, ob es gemacht werden könnte und warum es nicht gemacht wird. Die [führende Antwort] (http://stackoverflow.com/questions/3561210/how-does-deparse-work-and-does-perl-have-and-fold-constant-arrays/3561323#3561323) scheint durchzugehen die gleichen Fragen, die ich stelle. (1) Angenommen, es kann nicht aus technischen Gründen getan werden (2), dann wird angenommen, dass es einfach nicht gemacht wird, (3) dann spekulieren, dass es nicht getan wird, weil es nicht wichtig genug ist. –