Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2010, 09:50
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Duda variables locales y globales

Buenas,

Tengo una duda sobre el uso de variables locales y globales.

A continuación muestro el código

Código PERL:
Ver original
  1. sub Crear_Nuevas_Stats {
  2.     my $answer = 0;
  3.     my $DIRECTORIO_LOGS;
  4.     my $prompt = Term::Menu->new(
  5.         beforetext      => '  '.colored("  HOSTINGS  \n",'underscore cyan'),
  6.         aftertext       => colored("\n - Selecciona el hosting donde apunta la web: ",'cyan'),
  7.         nooptiontext    => '',
  8.         toomanytries    => colored("\n [ERROR] >>> Opcion incorrecta\n", 'bold red'),
  9.         toomanytries    => colored("\n [ERROR] >>> Opcion incorrecta\n", 'bold red'),
  10.     );
  11.     do {
  12.         $answer = $prompt->menu(
  13.             HosAPA01    => ["HosAPA01", 1 ],
  14.             HosAPA02    => ["HosAPA02", 2 ],
  15.             HosIIS01    => ["HosIIS01", 3 ],
  16.             HosIIS02    => ["HosIIS02", 4 ],
  17.             HosIIS03    => ["HosIIS03", 5 ],
  18.             Salir       => ["Salir",    0 ],
  19.         );
  20.     } until ($answer);
  21.  
  22.     if ($answer eq 'HosAPA01') {
  23.         print "Cargando variables para el hosting HosAPA01\n";
  24.         $DIRECTORIO_LOGS = $HOSAPA01_STATS;
  25.         print "$DIRECTORIO_LOGS\n";
  26.         print colored(" [OK] >>> Para HosAPA01 se han encontrado los siguientes directorios:",'bold green'),"\n\n";
  27.         my @ficheros_logs = Existen_Logs();
  28.         if (@ficheros_logs) {
  29.             print colored("\n Coincidencias encontradas:", 'bold green'),"\n @ficheros_logs\n";
  30.         }
  31.     }
  32.     elsif ($answer eq 'HosAPA02') {
  33.         print "Cargando variables para el hosting HosAPA02\n";
  34.     }
  35.     elsif ($answer eq 'HosIIS01') {
  36.         print "Cargando variables para el hosting HosIIS01\n";
  37.     }
  38.     elsif ($answer eq 'HosIIS02') {
  39.         print "Cargando variables para el hosting HosIIS02\n";
  40.     }
  41.         elsif ($answer eq 'HosIIS03') {
  42.         print "Cargando variables para el hosting HosIIS03\n";
  43.     }
  44.     elsif ($answer eq 'Salir') {
  45.         print "Saliendo del programa\n";
  46.     }
  47.     print colored("\n - Pega el directorio donde estan los fichero de logs: ",'cyan');
  48.     $dir_log_name = <STDIN> ;
  49.     print "El directorio es $dir_log_name\n";
  50.     print "Ruta: $DIRECTORIO_LOGS$dir_log_name\n";
  51.  
  52. }

No consigo que última linea me muestre el valor de $DIRECTORIO_LOGS
print "Ruta: $DIRECTORIO_LOGS$dir_log_name\n";

que ha sido asignado dentro del IF (linea 24)
$DIRECTORIO_LOGS = $HOSAPA01_STATS;

He probado usando my y local pero no he conseguido el resultado esperado. Cuando llega al final del código, no tiene valor...

Podéis ayudarme?

Muchas gracias de antemano!