2010-10-15 8 views

risposta

46

C'è una scorciatoia simile in Perl per questo:

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

Ciò funziona perché la [] crea un riferimento ad una matrice contenente un elemento (il risultato del calcolo), e quindi il @{} dereference matrice, che all'interno dell'interpolazione di stringhe stampa ciascun elemento dell'array in sequenza. Dato che ce n'è solo uno, stampa solo l'elemento.

+3

C'è un'altra opzione '" $ {\\ ($ a + 1)} "' ma preferisco l'ex per motivi di leggibilità. –

+2

Non penso che sia necessario sfuggire alla barra rovesciata. Ho provato questo e funziona: '" $ {\ ($ a + 1)} "' –

+1

@ Hynek-Pichi-Vychodil 'stampa" $ {\\ (Cwd :: cwd)} ";' get'SCALAR (0x28b7124) ',' stampa "$ {\ (Cwd :: cwd)}"; 'get'C:/Users/Administrator/IdeaProjects/untitled2' per me – BaiJiFeiLong

9

È possibile utilizzare il trucco @{[ EXPRESSION ]} menzionato da Greg Hewgill.

C'è anche il modulo Interpolation, che consente di eseguire trasformazioni arbitrarie sui valori che si stanno interpolando (come codificare le entità HTML) oltre alla valutazione delle espressioni.

+0

+1 kinda necklace, anche se è un po 'goffo e usa i legami . – Axeman

+0

@Axeman cosa c'è di sbagliato in cravatte? Solo curioso. – srchulo

Problemi correlati