Ver Mensaje Individual
  #9 (permalink)  
Antiguo 01/07/2010, 12:20
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: No terminar hasta que no se elija una opción valida

Cita:
Iniciado por jferrero Ver Mensaje
Debes quitar el my() de la línea 20.

En la línea 10 estabas, correctamente, definiendo la variable local $answer.

Pero en la 20 estabas definiendo "otra" "nueva" variable local $answer, que será local a las llaves donde se encuentra (el bucle do()).

Por eso también fallaba sin la línea 10: until() no sabía a qué variable $answer te estabas refiriendo porque la definías dentro, en la línea 20, y no es conocida fuera, ni siquiera en un until() pegado al bloque.

Código Perl:
Ver original
  1. my $respuesta;
  2.  
  3. do {
  4.     $respuesta = ... # presentamos el menú
  5.     # ...
  6. } until ($respuesta);
En este ejemplo, $respuesta de las líneas 4 y 6 se refieren a la única variable definida en la línea 1.

En Perl hay que tener claro el contexto o ámbito en que se mueven las variables. Puede ser lioso, pero es muy potente cuando quieres auténticas variables locales en sitios muy pequeños, que no quieres que influyan para nada en un código que está muchas líneas más allá.
Muchas gracias de nuevo!

Pensaba que my variable, era la definición global y para definir una variable de forma local había poner local(variable).