• Publicidad

Acceder a valores de un hash

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

Acceder a valores de un hash

Notapor anibalmauricio » 2009-11-12 17:26 @768

Muy buenas tardes a todos.

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.

Sintáxis: [ Descargar ] [ Ocultar ]
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};
    }
}
 
Coloreado en 0.002 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.
Última edición por explorer el 2009-11-12 17:55 @788, editado 2 veces en total
Razón: Ortografía, bloques de código, corrección del código, indentación del código
anibalmauricio
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-09-23 10:46 @490

Publicidad

Re: acceder a values de un hash

Notapor explorer » 2009-11-12 17:37 @776

Por de pronto, veo que $id no se usa en ningún sitio. Y tampoco se accede al contenido de %hash en ningún sitio.

¿No será cambiar $dk por $id?
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: acceder a values de un hash

Notapor anibalmauricio » 2009-11-12 17:44 @780

huy, discúlpame, error mio.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$id = $mov{$mov1}{id};
$value1+=$hash_info{$hash1}{$id}{value1};
$value2+=$hash_info{$hash1}{$id}{value2};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Así es como lo tengo. Fue un error al copiar el código. Discúlpame.

Bueno, la verdad así es como lo tengo, pero aún así no me deja acceder a los valores del hash y la verdad me parece bastante extraño.

Como siempre, te agradezco la prontitud de tu respuesta. Muchas gracias por todo.
anibalmauricio
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-09-23 10:46 @490

Re: acceder a values de un hash

Notapor explorer » 2009-11-12 17:53 @787

Sigues sin acceder al contenido de %hash.

A ver así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$id1 = $hash{$hash1}{id};
$id2 = $mov{$mov1}{id};
$value1+=$hash_info{$id1}{$id2}{value1};
$value2+=$hash_info{$id1}{$id2}{value2};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Acceder a valores de un hash

Notapor anibalmauricio » 2009-11-12 22:45 @989

Explorer, muchísimas gracias. Tienes toda la razón, ya me funcionó.

Te agradezco mucho tu valiosa colaboración y por, sobretodo, tu tiempo.

Cordial saludo
anibalmauricio
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-09-23 10:46 @490


Volver a Básico

¿Quién está conectado?

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