Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/04/2007, 10:49
flope
 
Fecha de Ingreso: enero-2007
Mensajes: 22
Antigüedad: 17 años, 3 meses
Puntos: 0
Variable scope con local

Hola,

Estoy intentando entender el uso de local para el scope de variables.
Ejemplo tomado de una web:

Código:
    
         use warnings;
        $lo = 'global';
        $m  = 'global';
        A();
        sub A {
          local $lo = 'AAA';
          my    $m  = 'AAA';
          B();
        }
        sub B {
          print "B ", ($lo eq 'AAA' ? 'can' : 'cannot') ,
                " see the value of lo set by A.\n";
         print "B ", ($m  eq 'AAA' ? 'can' : 'cannot') ,
                " see the value of m  set by A.\n";
        }
Esto imprime:
Cita:
B can see the value of lo set by A.
B cannot see the value of m set by A.
Con este ejemplo se ve claramente como funciona local. Pero siempre trabajo con use strict; por lo tanto me pedira que declare las variables.
Si declaro con my las dos primeras variables consigo el siguiente error:
Cita:
Can't localize lexical variable $lo
No se puede utilizar local con strict?

Queria utilizar esta funcion por que me encuentro que en mi programa necesitaria utilizar unas variables de una subrutina en otra subrutina utilizada en la primera subrutina sin pasar las variables a la segunda. ( TOMA! me he explicado bien?)

Muchas gracias por vuestra ayuda,

Flope