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

usar variable fuera de una funcion

Estas en el tema de usar variable fuera de una funcion en el foro de Programación General en Foros del Web. Hola: Tengo una duda que no se como resolver. Aquí la planteo por si alguien puede echarme un mano. Tengo un script en Perl el ...
  #1 (permalink)  
Antiguo 11/09/2008, 09:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 16 años, 6 meses
Puntos: 0
usar variable fuera de una funcion

Hola:

Tengo una duda que no se como resolver. Aquí la planteo por si alguien puede echarme un mano.

Tengo un script en Perl el cual tiene un bucle principal que llama a una funcion que se llama procesado.

En esta funcion procesado cada vez que se ejecuta en el bucle obtengo el valor de una variable llamada $tiempo_inicio.

El caso es que quiero usar esta variable definida dentro de la función procesado() , fuera de dicha funcion en el script para hacer una comparacion con otra variable definida en el script y que ademas mantenga el valor que ha obtenido dentro de la funcion procesado, es decir que si ejecuto procesado() y $tiempo_inicio=120 que luego pueda comparar fuera de la funcion con ese valor (120).

Si alguien me puede ayudar se lo agradeceria.

Un saludo
  #2 (permalink)  
Antiguo 11/09/2008, 09:13
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 9 meses
Puntos: 11
Respuesta: usar variable fuera de una funcion

Código:
my $tiempo_inicio = 0;

sub procesado {
    $tiempo_inicio = 120;
}

procesado();
if ($tiempo_inicio == 120) {
    print "Si\n";
}
La declaras fuera, por lo que se convierte en global a todo el programa.
  #3 (permalink)  
Antiguo 11/09/2008, 09:43
 
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: usar variable fuera de una funcion

Hola otra vez:

Voy a contarte lo que me ocurre es que no acabo de aclararme.


Dentro de la funcion procesado() realizo un procesado de un fichero y al final obtengo una variable $tiempo_inicio=time; que me da el tiempo en el cual se procesó el fichero por ultima vez.

El problema es que cuando se llama a la funcion procesado() si el fichero no tiene cosas nuevas a la ultima vez que se procesó no realiza el procesado() y hace un return sin pasar por la parte de codigo donde esta $tiempo_inicial.(es decir , para procesar algo en el fichero debe haber informacion nueva añadida a la que habia la ultima vez que procesó, si no sale y vuelve a intentarlo despues de un cierto tiempo)

Yo lo que quiero es poner en el bucle principal otra variable $tiempo_final=time despues de que se llama a la funcion procesado() y con esto en el bucle principal comparar el valor de $tiempo_final con el de $tiempo_inicio.

Lo que pregunto es como hacer para que el valor de $tiempo_inicio sea el valor de la ultima vez que se procesó el fichero aunque despues de ésta haya habido más veces que se ha llamado a procesado() pero no se ha actualizado el fichero.

Un saludo
  #4 (permalink)  
Antiguo 11/09/2008, 11:23
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 23 años
Puntos: 90
Respuesta: usar variable fuera de una funcion

Creo que lo que necesitas son 4 variables...

$tiempo_inicial;
$ultimo_timepo_inicial;
$tiempo_final;
$ultimo_tiempo_final;

Para tener separado el proceso actual con el último, de ser postitivo el proceso actual debes actualizar el tiempo último con los valores actuales, deser negativo dejas el último como está...

Espero que te sirva

Saludos
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 11/09/2008, 18:17
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 9 meses
Puntos: 11
Respuesta: usar variable fuera de una funcion

A mí me gustaría saber porqué necesitas hacer eso... es decir, ¿qué es lo que necesitas?

Por otra parte, el último párrafo está resuelto en el código que te mandé: la variable solo es modificada si hubo cambios.

Pero sería interesante saber por qué necesitas hacer todo eso...
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




La zona horaria es GMT -6. Ahora son las 09:52.