2010-10-21 12 views
23
$ cat temp.pl 
use strict; 
use warnings; 

print "1\n"; 
print "hello, world\n"; 

print "2\n"; 
print "hello, 
world\n"; 

print "3\n"; 
print "hello, \ 
world\n"; 

$ perl temp.pl 
1 
hello, world 
2 
hello, 
world 
3 
hello, 
world 
$ 

Per rendere il mio codice facilmente leggibile, voglio limitare il numero di colonne a 80 caratteri. Come posso spezzare una riga di codice in due senza effetti collaterali?Qual è il modo corretto di interrompere una linea di codice Perl in due?

Come indicato sopra, un semplice o \ non funziona.

Qual è il modo corretto per farlo?

risposta

36

In Perl, un ritorno a capo servirà in qualsiasi luogo in cui uno spazio regolare fa. I backslash non sono usati come in alcune lingue; basta aggiungere uno CR.

È possibile rompere le stringhe fino su più righe con le operazioni di concatenazione o lista:

print "this is ", 
    "one line when printed, ", 
    "because print takes multiple ", 
    "arguments and prints them all!\n"; 
print "however, you can also " . 
    "concatenate strings together " . 
    "and print them all as one string.\n"; 

print <<DOC; 
But if you have a lot of text to print, 
you can use a "here document" and create 
a literal string that runs until the 
delimiter that was declared with <<. 
DOC 
print "..and now we're back to regular code.\n"; 

potete leggere qui documenti in perldoc perlop.

+1

Si noti inoltre che il testo restituito da heredoc contiene caratteri di nuova riga mentre vengono scritti mentre quelli concatenati non lo hanno –

1

Usa ., l'operatore di concatenazione di stringhe:

$ perl 
print "hello, " . 
"world\n";ctrl-d 
hello, world 
$ 
+0

'print' era solo un esempio che ho usato. Esiste una caratteristica generale * di interruzione di riga * per Perl? – Lazer

+0

@Lazer: se si desidera che una stringa multilinea sia a linea singola, utilizzare '.'. Altrimenti, perl è in forma libera e puoi mettere una newline ovunque. – imgx64

4

Questo perché si è all'interno di una stringa. È possibile dividere le stringhe e concatenare utilizzando . come:

print "3\n"; 
print "hello, ". 
"world\n"; 
9

più una cosa da Perl Best Practices:

rompere le linee dalla distanza: lunga pausa prima di espressioni un operatore. come

push @steps, $step[-1] 
        + $radial_velocity * $elapsed_time 
        + $orbital_velocity * ($phrase + $phrase_shift) 
        - $test 
        ; #like that 
+0

* prima di leggere quel libro. L'avevo visto su script clist mainframe, ma Damian ha fatto un buon esempio di quanto sia veloce vedere cosa si sta facendo. E ora lo uso sempre. +1 per PBP! – Axeman

Problemi correlati