• Publicidad

Cómo separar una línea print en dos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cómo separar una línea print en dos

Notapor Statyk » 2005-11-01 19:13 @842

Hola.

Recuerdo que en C y en otros lenguajes de programación era posible hacer algo similar a esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using c Syntax Highlighting
  1. printf ("Esta es una frase muy muy muy muy larga, como no me entra \
  2.      \en una linea tengo que partirla en dos...");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


He probado a hacerlo en Perl... pero no funciona. ¿Es posible hacerlo?

Se me ocurre hacerlo así..., pero la otra forma resulta más cómoda...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Esta es una frase muy muy muy muy larga, como no me entra ";
  2. print "en una linea tengo que partirla en dos...";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¡¡Muchas gracias por adelantado!!
Statyk
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2005-06-05 17:12 @758

Publicidad

Notapor explorer39 » 2005-11-02 05:45 @281

Esta solución es casi la misma que la de repetir el print(), pero escribiendo menos. Es la que utilizo yo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Esta es una frase muy muy muy muy larga, como no me entra "
  2.     . "en una linea tengo que partirla en dos...";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Esta otra es un poco rara, pero está bien si el texto es largo. Se trata de asignar el texto a la variable $frase por medio de un fichero incluido en el propio código (<<) y a continuación cambiamos (s///) sus finales de línea (\n) por un espacio en blanco. Al final, imprimimos la $frase:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. ($frase = <<EOF) =~ s/\n/ /g;
  2. Esta es una frase muy muy muy muy larga, como no me entra
  3. en una linea tengo que partirla en dos...
  4. EOF
  5. print $frase;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Esto otra es quizás, la más clara. Se trata de considerar al texto como un vector (()) de líneas y las imprimimos uniéndolas (join) con un espacio:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print join ' ',(
  2. 'Esta es una frase muy muy muy muy larga, como no me entra',
  3. 'en una linea tengo que partirla en dos...',
  4. );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

O si nos acordamos de poner un espacio en blanco al final de cada línea, luego las unimos sin más:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print join '',(
  2. 'Esta es una frase muy muy muy muy larga, como no me entra ',
  3. 'en una linea tengo que partirla en dos... ',
  4. );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
explorer39
 

Notapor monoswim » 2005-11-02 08:30 @396

Debo de no entender bien a qué se refieren, porque con print pueden usar de por sí varias líneas, no importa que tenga salto de línea, hasta con encontrar las comillas de cierre sigue imprimiendo... por ejemplo:

print "Esto es una horación...
Esto es una horación...
Esto es una horación...
Esto es una horación...
Esto es una horación...
Esto es una horación...
Esto es una horación...";


lo imprimirá normalmente...

Espero que les sirva,

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor Statyk » 2005-11-02 09:24 @433

Hola,

monoswim, de la forma que propones sí funciona, pero el resultado no es el esperado: también mete un salto de línea, no quiero que me separe las líneas.. :-(
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ cat prueba.pl
  2. #!/usr/bin/perl
  3.  
  4. print "Esta esta una frase
  5. muy muy larga\n";
  6.  
  7. $ ./prueba.pl
  8. Esta esta una frase
  9. muy muy larga
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Me quedaré con el primer método que propone explorer39, es el más cómodo de todos.

Muchas gracias a los dos por los consejos.

Saludos,
Statyk
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2005-06-05 17:12 @758

Notapor monoswim » 2005-11-02 10:54 @496

Ya me parecía que no había entendido bien... ¡je,je!

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 10 invitados