• Publicidad

Vaciar variables

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Vaciar variables

Notapor boligan » 2017-10-19 10:34 @482

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.
boligan
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2017-06-14 11:28 @519

Publicidad

Re: Vaciar variables

Notapor explorer » 2017-10-19 12:11 @549

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.002 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
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados