Estoy intentando entender el uso de local para el scope de variables.
Ejemplo tomado de una web:
Código:
Esto imprime: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"; }
Cita:
Con este ejemplo se ve claramente como funciona local. Pero siempre trabajo con use strict; por lo tanto me pedira que declare las variables.B can see the value of lo set by A.
B cannot see the value of m set by A.
B cannot see the value of m set by A.
Si declaro con my las dos primeras variables consigo el siguiente error:
Cita:
No se puede utilizar local con strict?Can't localize lexical variable $lo
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