Página 1 de 1

Vaciar variables

NotaPublicado: 2017-10-19 10:34 @482
por boligan
Hola.

Estoy trabajando en un script que me lee varios ficheros con decenas de valores de variables meteorológicas para después guardarlos en un xml.

Mi cuestión es si es posible cada vez que comienzo a leer un fichero diferente, tener las variables escalares (las que uso en Perl para trabajar mi fichero) vacías, pues me he dado cuenta que muchas veces (no siempre y no sé por qué) me arrastra valores del fichero anterior.

Lo tengo hecho con $pos_tres = undef; pero esto lo tengo que hacer para cada variable y ¡uuhhhh!, son bastantes.
¿Existe alguna forma de hacerlo más humano...?

Gracias.

Re: Vaciar variables

NotaPublicado: 2017-10-19 12:11 @549
por explorer
La única manera sería haciendo

undef $variable;

o

$variable = undef;

Si son muchas variables, quizás estás haciendo algo mal, y posiblemente algunas de ellas puedan reconvertirse a un array o un hash.

De todas maneras, la mejor forma de reiniciar variables dentro de un bucle, es creándolas locales en ese bucle:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for my $fichero (@ficheros) {                   # bucle por los ficheros a leer
  2.  
  3.     ## Declaración y declaración/definición de variables
  4.     my $var1;
  5.     my $var2;
  6.     my $var3 = '';
  7.     my $var4;
  8.     my $var5 = 0;
  9.     my $pos_tres;
  10.  
  11.     ## resto del código
  12.     ...;
  13.     my $variable_temporal = $calculo * $complicado / $uso + ($variable / $temporal);
  14.     ...;
  15.  
  16. }                                               # fin del bucle
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

De esta manera, estás declarando variables locales dentro del bucle. Cada vez que se da una vuelta, las variables se crean de nuevo, vacías.

Más información sobre my() en tu ordenador: perldoc -f my