2010-10-15 6 views

Antwort

46

Es gibt eine ähnliche Kurzschrift in Perl dafür:

$a = 1; 
print "@{[$a + 1]}" 

Dies funktioniert, weil die [] eine Referenz auf einen Array erzeugt ein Element enthält (das Ergebnis der Berechnung), und dann wird die @{} dereferenziert das Array, Mit dieser Internen String-Interpolation wird jedes Element des Arrays nacheinander gedruckt. Da es nur einen gibt, druckt es nur das eine Element.

+3

Es gibt eine andere Option "$ {\\ ($ a + 1)}}", aber ich bevorzuge aus Gründen der Lesbarkeit. –

+2

Ich glaube nicht, dass Sie dem Backslash entkommen müssen. Ich habe es versucht und es funktioniert: '" $ {\ ($ a + 1)} "' –

+1

@ Hynek-Pichi-Vychodil 'drucken" $ {\\ (Cwd :: cwd)} ";' get'SCALAR (0x28b7124) ',' print "$ {\ (Cwd :: cwd)}"; 'get'C:/Benutzer/Administrator/IdeaProjects/untitled2' für mich – BaiJiFeiLong

9

Sie können den @{[ EXPRESSION ]} Trick verwenden, den Greg Hewgill erwähnte.

Es gibt auch das Modul Interpolation, mit dem Sie beliebige Transformationen an den Werten, die Sie interpolieren (wie HTML-Entities codieren), zusätzlich zur Auswertung von Ausdrücken vornehmen können.

+0

+1 ein bisschen ordentlich, auch wenn es ein wenig klobig ist und Bindungen verwendet . – Axeman

+0

@Axeman was ist los mit Krawatten? Nur neugierig. – srchulo

Verwandte Themen