Estoy tratando de acceder a los valores contenidos en un hash pero no he podido extraer estos valores.
A continuación pongo el código que estoy utilizando.
Using perl Syntax Highlighting
# la rutina sub_consulta_db me devuelve un hash
# con los valores de la tabla que estoy consultando en la BD
my %hash = sub_consulta_db(tabla1);
my %mov = sub_consulta_db(tabla2);
# Hago la consulta a dos tablas que no están relacionadas.
# Ahora lo que deseo es saber los campos que estas tablas tienen en común.
# Ustedes se preguntarán por qué no hago la consulta en la BD
# y que sea ella la que me devuelva los registros como lo quiero
# en un solo hash, pero desafortunadamente la BD no me ayuda mucho.
# Por eso opté por esta solución muy poco ortodoxa.
my %hash_info = ();
# %hash_info está creado de la forma
# $hash_info{campotabla1}{campotabla2}{value1 o value2};
# Al recorrer este hash está armado de la forma que yo necesito
# Ahora recorro los dos primeros hash %hash y %mov
foreach $hash1 (sort keys %hash) {
next unless $hash1;
foreach $mov1 (sort keys %mov) {
next unless $mov1;
$id = $mov{$mov1}{id};
$value1+=$hash_info{$hash1}{$dk}{value1};
$value2+=$hash_info{$hash1}{$dk}{value2};
}
}
# con los valores de la tabla que estoy consultando en la BD
my %hash = sub_consulta_db(tabla1);
my %mov = sub_consulta_db(tabla2);
# Hago la consulta a dos tablas que no están relacionadas.
# Ahora lo que deseo es saber los campos que estas tablas tienen en común.
# Ustedes se preguntarán por qué no hago la consulta en la BD
# y que sea ella la que me devuelva los registros como lo quiero
# en un solo hash, pero desafortunadamente la BD no me ayuda mucho.
# Por eso opté por esta solución muy poco ortodoxa.
my %hash_info = ();
# %hash_info está creado de la forma
# $hash_info{campotabla1}{campotabla2}{value1 o value2};
# Al recorrer este hash está armado de la forma que yo necesito
# Ahora recorro los dos primeros hash %hash y %mov
foreach $hash1 (sort keys %hash) {
next unless $hash1;
foreach $mov1 (sort keys %mov) {
next unless $mov1;
$id = $mov{$mov1}{id};
$value1+=$hash_info{$hash1}{$dk}{value1};
$value2+=$hash_info{$hash1}{$dk}{value2};
}
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Como se pueden dar cuenta, lo que quiero es realmente recorrer el hash_info y asignar los valores de esos campos a las variables $value1 y $value2 pero dentro de estos foreach() no puedo acceder al hash $hash_info.
Les agradecería toda la ayuda que me pudieran brindar a este respecto, pues es algo que no he podido hacer. Sé que debe ser un error muy tonto pero la verdad no he podido encontrar la solución.
Muchas gracias de antemano por su gentil ayuda y colaboración.