• Publicidad

Cómo crear variables mientras se ejecuta un programa

¿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 crear variables mientras se ejecuta un programa

Notapor Mono_Ezpacial » 2012-10-29 12:35 @566

Hola, ¿qué tal?

Hace poco estaba haciendo un programa que permitiera agregar y luego mostrar algo, como por ejemplo, animales (siempre los utilizo para ejemplos n_n)

Mi idea es que cuando el usuario escriba:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
add perro
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

el programa cree una variable automáticamente y luego muestre
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "add perro";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

(como una confirmación del programa que se ha agregado la variable satisfactoriamente, y que allí quede perro, pero no tengo la mas mínima idea de cómo hacerlo, no creo que sea muy difícil, también me gustaría que funcionara con números. Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
add 123
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Es posible hacer eso, que el usuario cree variables mientras se ejecuta el programa?

Gracias de antemano :D
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Publicidad

Re: Cómo crear variables mientras se ejecuta un programa

Notapor explorer » 2012-10-29 14:43 @654

Sí que se pueden crear variables, pero es algo que actualmente no se recomienda.

Es mucho más cómodo y claro usar un array o un hash.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. my $entrada;
  4. my @animales;
  5.  
  6. do {
  7.     print "Introduce el nombre de un animal ('fin' para terminar): ";
  8.     chomp($entrada = <>);                                    # lees desde el teclado y quitar carácter fin de línea
  9.  
  10.     push @animales, $entrada if $entrada ne 'fin';           # si no es 'fin', guardamos la $entrada en @animales
  11.  
  12. } while $entrada ne 'fin';                                   # repetimos mientras no lleguemos al 'fin'
  13.  
  14. print "Animales introducidos: ", scalar(@animales), "\n";
  15.  
  16. for my $animal (@animales) {                                 # para cada $animal del grupo de @animales
  17.     print "\t$animal\n";
  18. }
  19.  
  20. print "$animal[2]\n";                                        # tercer animal
  21.  
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: Cómo crear variables mientras se ejecuta un programa

Notapor Mono_Ezpacial » 2012-10-30 13:07 @588

Ok, sí, ya lo probé y sí funciona, voy a acomodarlo a mi código anterior, ¡Gracias y Saludos! :D
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Casi acabo, ¡ayuda! :D

Notapor Mono_Ezpacial » 2012-11-01 22:46 @990

Hola bro, me funcionó de maravilla tu código. pero lo que pasa es que quiero que no se ejecute el while (bucle) hasta escribir la palabra 'fin', solamente quiero que ponga un animal y ya. Otro problema que me surgió fue al momento de mostrar las cosas que he puesto no salen. Gracias, bro. Si no es mucha molestia me podrías ayudar a solucionar los dos problemitas que tengo. :D

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. my $jaka = 0;
  3. do {
  4.     print "animal:  > ";
  5.     $canes   = "-animal";
  6.     $help    = "help";
  7.     $clear   = "clear";
  8.     $exit    = "exit";
  9.     $add_can = "add animal";
  10.     chomp( $usr = <> );
  11.  
  12.     if ( $usr eq $add_can ) {
  13.         my $entrada;
  14.         my @canadded;
  15.         do {
  16.             print "\t [+]Introduce una mascota: ";
  17.             chomp( $entrada = <> );
  18.             push @canadded, $entrada if $entrada ne 'fin';
  19.         } while $entrada ne 'fin';
  20.         if ( scalar(@canadded) eq '0' ) {
  21.             print "\n [*]La mascota fue añadida correctamente\n";
  22.         }
  23.         else {
  24.             print "\n[*]Las Mascotas fueron añadidas correctamente\n";
  25.         }
  26.     }
  27.     elsif ( $usr eq $canes ) {
  28.         system("clear");
  29.         print "\n\nTotal de mascotas: ", color("green"), scalar(@canadded), "\n", color("reset");
  30.         print color("green"), q{
  31.         MASCOTAS
  32.     =================  
  33.         }, color("reset");
  34.         use Term::ANSIColor;
  35.  
  36.         print "$animal[2]\n";
  37.         for my $animal (@canadded) {
  38.             print "\t$animal\n";
  39.         }
  40.     }
  41.     elsif ( $usr eq $help ) {
  42.         print "ayuda\n";
  43.     }
  44.  
  45.     elsif ( $usr eq $clear ) {
  46.         system("clear");
  47.     }
  48.     elsif ( $usr eq $exit ) {
  49.         exit(0);
  50.     }
  51.  
  52.     else {
  53.         print color("red"), "\t[-]", color("reset"), " Unknown command = $usr ??\n";
  54.     }
  55. } until $jaca;
  56.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-11-02 05:52 @286, editado 1 vez en total
Razón: Formateado de código con Perltidy
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Re: Cómo crear variables mientras se ejecuta un programa

Notapor explorer » 2012-11-02 07:49 @367

Si no quieres el bucle, solo tienes que quitarlo.

Quita las líneas 15 y 19. Y quita la parte del if() de la línea 18.

En cuanto al segundo problema, mueve la línea 14 después de la 2.

Como lo tienes ahora, estás recreando la variable @canadded cada vez que se mete un animal nuevo, por lo que siempre contiene un solo animal, y es siempre el último introducido. Los anteriores son olvidados en la línea 26, cuando acaba el contexto en que declaraste esa variable.
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 32 invitados