$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