• Publicidad

print y chomp juntos

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

print y chomp juntos

Notapor Juan Manu » 2013-06-13 14:50 @660

Hola, soy nuevo en el tema de programación en general... obviamente también en Perl y tengo la siguiente pregunta:

¿Por qué cuando escribo algo como:

while ($linea = <STDIN>){
chomp $linea;}
print $linea;


la función print no imprime nada en la salida estándar?

Lo que intento hacer es asignar varias líneas (desde entrada estándar) a una sola variable.
Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
actg
ggct
aaaa
gtac
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Todas esas 4 líneas adjudicárselas a la variable $linea.

De antemano, ¡¡muchas gracias por cualquier ayuda!!

P.D.: No soy formado en ciencias exactas, ¡¡¡entonces me disculparán errores garrafales!!!

Gracias,
Juan Manu
Juan Manu
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2013-06-12 16:48 @742

Publicidad

Re: print y chomp juntos

Notapor explorer » 2013-06-13 15:11 @674

Bienvenido a los foros de Perl en Español, Juan Manu.

El código que has puesto, bien formateado, es este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ( $linea = <STDIN> ) {
  2.     chomp $linea;
  3. }
  4. print $linea;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Entonces, el bucle recorre todas las líneas que le llegan desde la entrada estándar. Y por cada una de ellas, le quita el carácter/los caracteres de final de línea, y... nada más. Así que, yo supongo que la última línea del código, lo único que hace es sacar la última línea leída de la entrada estándar, nada más.

Si lo que quieres es almacenar todo el archivo en una sola variable, puedes ir acumulando:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $secuencia;
  2. while (my $linea = <STDIO>) {
  3.     chomp $linea;
  4.     $secuencia .= $linea;
  5. }
  6. print "[$secuencia]\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra forma: leerlo de golpe en un array, quitar todos los finales de línea, y luego unirlo todo en la variable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @archivo = <STDIO>;    # leemos todas las líneas
  2. chomp @archivo;
  3. my $secuencia = join '', @archivo;
  4. print "[$secuencia]\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Hay más formas...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados