Foros del Web » Programación para mayores de 30 ;) » Programación General »

ámbito de las variables

Estas en el tema de ámbito de las variables en el foro de Programación General en Foros del Web. Hoa gente, tengo un pequeño problema, tengo un script que usa funciones que están en una librería mia propia....Pero las funciones de la librería no ...
  #1 (permalink)  
Antiguo 14/01/2004, 15:30
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
ámbito de las variables

Hoa gente, tengo un pequeño problema, tengo un script que usa funciones que están en una librería mia propia....Pero las funciones de la librería no pueden leer las variables del script del cual son llamadas.

Por cuestiones de proligidad uso la sentencia use strict y todas las variables son creadas bajo la sentencia my.

la única forma es pasarlas las variables como parámetros??????

por ejemplo:

libreria.pl
sub uno{
print "$caca";
}
1;

script.pl
use strict;
require libreria.pl;

my ($caca);
$caca = "bla bla bla";

&uno();
exit;

Desde ya muchas gracias
__________________
Esteban Quintana
  #2 (permalink)  
Antiguo 24/01/2004, 12:51
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años, 6 meses
Puntos: 0
Hola monoswim:

Debido a que estas usando el pragma strict no puede hacer variables que sean globales, por lo que siempre tienes que estar enviando las variables.

Lo que te recomiendo es que en este caso uses referencias, es decir para que siempre se use la misma variable, para que me entiendas te voy a poner un ejemplo usando más o menos lo que nos mostraste:

Código:
libreria.pl
sub uno{
 my $caca = shift;
   
  #Usamos doble $ para de-referenciar 
   $$caca += 1; #Sumamos uno a la variable
 }
1;


script.pl
use strict;
require libreria.pl;

my $caca = 1;

uno(\$caca); #Llamamos la funcion para sumar 1

print $caca;  #Resultado debe de ser 2
exit;

Recuerda que cuando mandamos la referencia lo que estamos envíando es el número de byte en memoria donde se encuentra nuestra variable, por ende lo que editamos es en memoria, por lo que podemos editar la misma variable sin ningun problema.

Espero que sea de ayuda en tu problema el ejemplo que te mostre.

SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #3 (permalink)  
Antiguo 26/01/2004, 06:48
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Resusitaste Kidd!!!!

Que pasó que estabas desaparecido???...hasta tu página se había ido!!!!!!jeje

Es bueno tenerte de regreso

MonoSwim
Gracias por la respuesta!!!!!!!
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 26/01/2004, 11:00
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años, 6 meses
Puntos: 0
Hola MonoSwim:

Se que me desparecí, no fue a cuenta propio pero bueno, estoy de regreso....saludos a todos los amantes de perl que andan por ahí.

SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:14.