2010-10-21 6 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 
$ 

Para que mi código sea fácil de leer, quiero restringir el número de columnas a 80 caracteres. ¿Cómo puedo dividir una línea de código en dos sin ningún efecto secundario?¿Cuál es la forma correcta de dividir una línea de código Perl en dos?

Como puede observarse, un simple o \ no funciona.

¿Cuál es la forma correcta de hacerlo?

Respuesta

36

En Perl, un retorno de carro servirá en cualquier lugar donde un espacio normal hace. Las barras diagonales inversas no se usan como en algunos idiomas; solo agregue un CR.

Puede romper las cadenas a lo largo de varias líneas con las operaciones de concatenación 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"; 

Usted puede leer aquí en documentos en perldoc perlop.

+1

También tenga en cuenta que el texto devuelto por el heredoc contiene caracteres de nueva línea a medida que se escriben, mientras que los concatenados no –

1

Uso ., el operador de concatenación de cadenas:

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

'print' era sólo un ejemplo que he utilizado. ¿Existe una característica general * de interruptor de línea * para Perl? – Lazer

+0

@Lazer: si desea que una cadena de varias líneas sea de una sola línea, use '.'. De lo contrario, perl es de forma libre y puede poner una nueva línea en cualquier lugar. – imgx64

4

Esto se debe a que se encuentra dentro de una cadena. Puede dividir las cuerdas y concatenar usando . como:

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

Una cosa más de Perl Best Practices:

Romper líneas largas: Romper expresiones largas antes de un operador. como

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

I * odian * ese estilo antes de leer ese libro. Lo había visto en scripts de clúster de mainframe, pero Damian hizo un buen caso acerca de qué tan rápido es ver lo que se está haciendo. Y ahora lo uso todo el tiempo. +1 para PBP! – Axeman

Cuestiones relacionadas