Resumen: variables..

Daniel Sol Llaven daniel@simba.dgsca.unam.mx
Wed, 1 Oct 1997 14:16:50 -0600 (CST)


Saludos!!!

Que bueno que te hemos sido de alguna ayuda, y espero que pronto el poner 
una pregunta en el foro sea algo temible por la cantidad de respuestas 
que genere :)


On Tue, 30 Sep 1997, Ing. Efren Fitz Rodriguez wrote:

> para construir este hash habria otra manera . por ejemplo intente...
> 	$vars{bTmx} .= $dato[1] if (Tmx);
> esto es correcto? o de plano estoy metiendo la pata con esta sintaxis

En perl 4 si, en perl 5 no.
En perl 5 necesitarias algo como:
  if(Tmx){$vars{bTmx}.=$dato[1]};
  ...

> los datos esto se despliegan de manera aleatoria, si le doy un sort los
En efecto, las lleves del hash no tienen ningun orden aparente.

> La idea es desplegarlos en el orden que tiene en la "forma" y como los
Para resolver el problema del orden te recomiendo sacarle la vuelta a la 
extraccion de llaves del hash, genera junto con el hash un arreglo con 
las lleves y usa este para determinar el orden y voila! todo arreglado.
Siguiendo con la propuesta anterior seria algo como:

if(Tmx){$vars{Tmx}.=$dato[1];push @keyvars,"Tmx"};
...

Ahora, hay un patron en este codigo y yo pensaria en reducirlo, veamos, 
para cada operacion de creacion de elemento de hash e insercion en el 
arreglo hacemos las mismas operaciones, con la diferencia de que cada 
llave tiene una posicion diferente en los valores del arreglo @dato, mmm, 
interesante.

entonces, si hacemos un has con la correspondencia de elemento y orden en 
los datos del arreglo @dato:

%hnuevo=("Tmx",1,"XXX",2,"YYY",3,etc);

Y si ademas, en vez de crear las variables (o lo que sea) Tmx ponemos 
todos los campos que deeemos en un arreglo (digamos $campos). Podriamos 
simplificar los if del principio por un:

foreach $campo (@campos)
{
  $vars{$campo}=$dato[$nuevo{$campo}];
  push @kayvars,$campo
}

Y segun yo, puede funcionar :)

El chiste estaria en generar el arreglo @campos.


Bolo Lacertus: lacertus@servidor.dgsca.unam.mx			==~\___\
http://132.248.71.81/cgi-bin/lacertus/hola			 =__vvvv
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/GE/GED d>d? s:+ a-- C++>+++$ US+++$ P++++$ L E? W++>+++ N++ o? K- 
w--- O !M V-- PS+ PE-- Y+ PGP++ t+ 5? X- R@ tv-- b++@- DI++ D+ G++ e+>++ 
h* r++(*) z+ 
------END GEEK CODE BLOCK------