CPAN: Ein oder mehr strings?

Beitrag lesen

$somevar = "text $var text";
muss der Parser erst mal optimieren zu
"text ".$var." text";
Die Concatenation kostet dich also nichts gegenüber der Interpolation.

Deine unbelegte Behauptung stimmt aber nicht. Eine Optimierung findet so nicht statt; Interpolation benutzt immer mehr Opcodes als Verkettung.

  

> perl -MO=Terse -e'$somevar = "text $var text"; $somevar = "text ".$var." text";'  

LISTOP (0x8fa260) leave [1]  
    OP (0x8b77a0) enter  
    COP (0x8aa5d0) nextstate  
    BINOP (0x8aa590) sassign  
        UNOP (0x8c44d0) null [67]  
            OP (0x8c7020) null [3]  
            BINOP (0x8ccce0) concat [4]  
                BINOP (0xa6bcc0) concat [3]  
                    SVOP (0x8c9900) const [10] PV (0x8c0f68) "text "  
                    UNOP (0x8c5300) null [15]  
                        PADOP (0x8c7280) gvsv  GV (0x8c1088) *var  
                SVOP (0x925770) const [11] PV (0x8c0f80) " text"  
        UNOP (0x8c4da0) null [15]  
            PADOP (0x8ed0c0) gvsv  GV (0x8c0f38) *somevar  
    COP (0x8f99b0) nextstate  
    BINOP (0x9e4b10) sassign  
        BINOP (0x8b7820) concat [9]  
            BINOP (0x8b7760) concat [8]  
                SVOP (0x8b76a0) const [5] PV (0x8c0fe0) "text "  
                UNOP (0x8b7720) null [15]  
                    PADOP (0x8b76e0) gvsv  GV (0x8c1088) *var  
            SVOP (0xa1ec70) const [12] PV (0x8c1028) " text"  
        UNOP (0xa1ec30) null [15]  
            PADOP (0xa1ebf0) gvsv  GV (0x8c0f38) *somevar  
-e syntax OK