• Publicidad

Hash y arreglos

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

Hash y arreglos

Notapor esse » 2009-02-03 23:36 @025

Hola, tengo una duda, quisiera que me pudieran ayudar ya que tengo lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %clientes = (
   nombre => "Juan",
   direccion => "framboyanes 17",
   numeros => ["5551234132","5551172314"],
);
my @telefonos = ($clientes{numeros});
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero cuando hago un foreach() a teléfonos me imprime la dirección de memoria (ARRAYx012345)

¿Cómo puedo hacerlo? GRACIAS
esse
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-12-31 00:15 @052

Publicidad

Notapor Sombrerero_Loco » 2009-02-04 04:26 @226

¡Hola!

Pues es normal que te imprima la memoria porque es eso mismo lo que le dices con el la igualación del array, ya que le dices que te ponga en el array dónde está el número, pero no lo que quieres, que es que te ponga el número en sí que están dentro del array dentro de hash.

Prueba esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Data::Dumper;
my %clientes = (
   nombre => "Juan",
   direccion => "framboyanes 17",
   numeros => ["5551234132","5551172314"]);

print "numeros -> @{ $clientes{'numeros'} }\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Fíjate en el print() y la @ que lleva delante el hash, eso es para decirle que todo lo que pertenezca a la key 'numeros' va a ser un array, con lo que no devolverá un valor asociado, sino un array de valores.

¡Espero que te sirva!
Sombrerero_Loco
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2008-11-11 11:20 @514

Notapor explorer » 2009-02-04 04:36 @233

Prueba con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %clientes = (
   nombre => "Juan",
   direccion => "framboyanes 17",
   numeros => ["5551234132","5551172314"],
);

my $telefonos_ref = $clientes{numeros};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ahora, $telefonos_ref contiene una referencia a los números de teléfono del cliente.

Para presentarlos, como decía Sombrerero_Loco, hay que acceder al arreglo que se encuentra allí escondido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $telefono (@$telefonos_ref) {
    print "Teléfono: $telefono\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sale:
Código: Seleccionar todo
Teléfono: 5551234132
Teléfono: 5551172314

Básicamente, es la misma notación que la que Sombrerero_Loco te ha indicado.
Última edición por explorer el 2009-02-08 07:04 @336, editado 1 vez en total
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

Notapor Sombrerero_Loco » 2009-02-04 05:06 @254

Explorer, la tuya es mejor si lo que quiere es que salga en diferentes líneas, la mía salía todo en la misma línea :(
Sombrerero_Loco
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2008-11-11 11:20 @514

Notapor explorer » 2009-02-04 05:32 @272

Bueno, así esse tiene más posibilidades... ya sabemos que en Perl "hay más de una forma de hacerlo".

Y eso es lo más importante en nuestro lenguaje, a diferencia de otros, en los que solo hay una posibilidad.
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

Notapor esse » 2009-02-04 20:49 @909

MUCHAS GRACIAS, ha sido muy buena su ayuda :D
esse
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-12-31 00:15 @052


Volver a Básico

¿Quién está conectado?

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

cron