• Publicidad

Ejercicio que recoge los datos por parámetros y los muestra

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

Ejercicio que recoge los datos por parámetros y los muestra

Notapor alesevimor » 2012-02-14 10:29 @478

Hola, mira, este ejercicio está hecho prácticamente. Lo que hace es ir recogiendo las líneas y las muestra, pero cuando hago ctrl+d me pregunta que si quiero continuar, si le digo que sí debe entrar en el bucle pero si le digo que no debe salir de la ejecución. ¿Qué me falta?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $contador=0;
  2. print "Introduce palabras y pulsa intro para el salto de línea, cuando quieras finalizar pulsa ctrl+d\n";
  3. @contenido=<STDIN>;
  4. foreach $valores (@contenido)
  5.         {
  6.         $contador++;
  7.         print "$contador: $valores";
  8.         }
  9. print "¿Desea continuar?si/no  -";
  10. $respuesta=<STDIN>;
  11. if ($respuesta == "no")
  12.                 {
  13.                 print "FIN \n";
  14.                 break;
  15.                 }
  16. while ($respuesta=="si")
  17.         {
  18.         print "Continuamos\n";
  19.         @contenido=<STDIN>;
  20.         foreach $valores (@contenido)
  21.                 {
  22.                 $contador++;
  23.                 print "$contador: $valores";
  24.                 }
  25.         print "¿Desea continuar?si/no  -";
  26.         $respuesta=<STDIN>;
  27.                 if ($respuesta == "no")
  28.                 {
  29.                 print "FIN \n";
  30.                 break;
  31.                 }
  32.         }
  33.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Publicidad

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor explorer » 2012-02-14 13:43 @613

Lo que le falta es corregir los errores... Casi no parece lenguaje Perl... se parece más a PHP :)

  • Las líneas 3 a 15 están repetidas en las líneas 19 a 31... así que no está bien pensada la solución
  • break; solo existe a partir de Perl v5.10, y solo se usa dentro de una estructura given/when. Más información en perldoc perlsyn, sección Switch statements (traducido, sección Instrucciones Switch)
  • El operador de igualdad '==' solo sirve para comparaciones numéricas

Si quieres saber si un programa está bien escrito, Perl puede ayudarte, si ejecutas el programa así:

perl -c tu_programa.pl

pero solo te avisará de fallos sintácticos leves.
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

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor alesevimor » 2012-02-14 14:34 @648

Con este script me funciona perfectamente. El único problema es lo que me has dicho del operador "==". Como bien dices con numéricos como he puesto en este script, funciona, pero con string no, ¿cómo hago para que funcione con string?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $contador=0;
  2. $afirmativo="1";
  3. $negativo="2";
  4. print "Introduce palabras y pulsa intro para el salto de línea, cuando quieras finalizar pulsa ctrl+d\n";
  5.         @contenido=<STDIN>;
  6.         foreach $valores (@contenido)
  7.                 {
  8.                 $contador++;
  9.                 print "$contador: $valores";
  10.                 }
  11.         print "¿Desea continuar? si/no  -";
  12.         $respuesta=<STDIN>;
  13.         if ($respuesta == $negativo)
  14.                         {
  15.                         print "Adiós desde la primera ejecución\n";  
  16.                         break;
  17.                         }
  18.         while ($respuesta == $afirmativo)
  19.                 {
  20.                 print "Continuamos\n";
  21.                 @contenido=<STDIN>;
  22.                 foreach $valores (@contenido)
  23.                         {
  24.                         $contador++;
  25.                         print "$contador: $valores";
  26.                         }
  27.                 print "¿Desea continuar?si/no  -";
  28.                 $respuesta=<STDIN>;
  29.                         if ($respuesta == $negativo)
  30.                                 {
  31.                                 print "Adiós desde el bucle\n";
  32.                                 }
  33.                 }
  34.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor explorer » 2012-02-14 15:59 @707

Les tienes en perlsyn, sección Equality Operators (traducido, sección Operadores de igualdad)
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

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor alesevimor » 2012-02-14 19:51 @868

Sí, entiendo, el operador "eq" sirve para las igualdades con string pero cuando lo utilizo no me sale. Mira este script tan sencillo y no me sale.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "¿Cual es tu nombre?\n";
  2. $respuesta=<STDIN>;
  3. if ($respuesta eq "Alejandro")# ¿Esta línea esta bien escrita, no?
  4.         {
  5.         print "El nombre elegido no es alejandro\n";
  6.         }
  7. else
  8.         {
  9.         print "NADA";
  10.         }
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor explorer » 2012-02-14 20:01 @876

$respuesta está almacenando lo que ha leído por el teclado, y lo que ha leído es "Alejandro", más el carácter (o caracteres) de fin de línea, pues pulsaste la tecla Intro (o Enter o Entrar), y esa última pulsación también se envía al programa.

De lo que leas desde la entrada estándar, deberías quitarle esos caracteres de fin de línea.

En Perl, eso se hace con chomp().

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "¿Cuál es tu nombre?\n";
  2. $respuesta = <STDIN>;
  3. chomp($respuesta);               # quitar carácter fin de línea
  4. if ( $respuesta eq "Alejandro" ) {
  5.     print "El nombre elegido es Alejandro\n";
  6. }
  7. else {
  8.     print "NADA\n";
  9. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor alesevimor » 2012-02-15 09:24 @433

Ante todo, gracias. El de antes ya está terminado. Ahora tengo que hacerlo mediante una función que es la que se encarga de la tarea de "Desea continuar". He hecho esto pero no me funciona.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub pregunta
  2.                 {
  3.                         print "¿Desea continuar?";
  4.                         $respuesta=<STDIN>;
  5.                         chomp($respuesta);
  6.                         if ($respuesta ne "si")
  7.                         {
  8.                                 print "Programa terminado\n";
  9.                                 break;
  10.                         }
  11.                 }
  12.  
  13. while(true)
  14.         {
  15.         $contador=0;
  16.         while ($respuesta eq "si")
  17.                 {
  18.                 @contenido=<STDIN>;
  19.                 foreach $valores (@contenido)
  20.                         {
  21.                         $contador++;
  22.                         print "$contador: $valores";
  23.                         }
  24.                 }
  25.         pregunta
  26.         }
  27.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Ejercicio que recoge los datos por parámetros y los mues

Notapor alesevimor » 2012-02-15 10:04 @461

Ya lo he resuelto. Gracias de todos modos. Era problema del primer while() y $respuesta=si;, al principio.
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705


Volver a Básico

¿Quién está conectado?

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

cron