Foros del Web » Programación para mayores de 30 ;) » Programación General »

recorrer arrays multidimensionales en PERL

Estas en el tema de recorrer arrays multidimensionales en PERL en el foro de Programación General en Foros del Web. Bueno lo que necesito es acceder a un array tal como el siguiente: $resultado[0][0]=1; $resultado[0][1]=2; $resultado[1][0]=3; $resultado[1][1]=4; Ya probe con el foreach foreach $b (@resultado){ ...
  #1 (permalink)  
Antiguo 19/05/2004, 16:20
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
recorrer arrays multidimensionales en PERL

Bueno lo que necesito es acceder a un array tal como el siguiente:
$resultado[0][0]=1;
$resultado[0][1]=2;
$resultado[1][0]=3;
$resultado[1][1]=4;

Ya probe con el foreach

foreach $b (@resultado){
print $b;
}

y me da esto :

ARRAY(0x2755f8)ARRAY(0x27564c)

pero cuando trato de acceder a los mimbros de los dos supuestos arrays internos no se puede

Si hago
foreach $b (@resultado[0]){
print $b;
}

me da
ARRAY(0x2755f8)

pero como accedo a el contenido de ese array interno?!!!

tambien mi idea era obtener el tamaño del array:
print $#resultado;
me dice que el ultimo indice es 1
y el otro que me deberia dar el tamaño del array:
$x=@resultado;
print $x;
me da:
2
¿pero y la otra dimension?

¡¡¿como accedo a los elementos de ese array?!!
  #2 (permalink)  
Antiguo 19/05/2004, 17:21
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Es un tema de Referencias

Mira, el tema es que tienes 2 dimenciones, una es el array normal y otra es cada elemento de ese array original, que a su vez son otros arrays que los estás llamando por referencia.

Entonces lo que debes hacer es realizar un foreach adentro de otro! de manera que por cada elemento de tu array original recorra a la vez cada elemento del array referenciado.

la verdad es que no me acuerdo en detalle la sisntaxis pero te lo escribo igual para que te des una idea de todo el palabrerío que dije recién...jeje... quedará algo más o menos así

foreach @$elemento_original(@array){
foreach $$elemento (@$elemento_original){
#AHORA SI LO ESTÁS RECORRIENDO TODO
}
}

Más o menos es algo así, es que no me acuerdo bien como hacer las referencias...Pero la base es esa

Espero que te sirva
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 19/05/2004, 17:22
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
me olvidaba, lo que te lococa ARRAY(0x2755f8)ARRAY(0x27564c)
es la dirección de memoria de ese dato....es porque estás haciendo mal la referencia
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 19/05/2004, 18:27
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Hola:

Para que puedas checar bien tu array, debes de hacer lo siguiente:

Código:
foreach $b (@resultado){
    print "@$b\n";
}
SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #5 (permalink)  
Antiguo 22/05/2004, 11:44
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
Gracias me resolvieron muy bien la duda que tenia.

Efectivamente era una referencia y por eso primero me la pense asi:

foreach $x (@resultado)
{
print $x->[0];
print $x->[1];
print $x->[2];
}

pero como tu dices:

foreach $b (@resultado){
foreach $x (@$b)
{
print $x;
}
}

es una solucion perfecta mucho más practica

el problema era que todabia no domino los punteros en PERL

Última edición por Troyano; 22/05/2004 a las 11:49
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:06.