elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema en perl con Hash
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema en perl con Hash  (Leído 2,369 veces)
Ocelot1994

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Problema en perl con Hash
« en: 23 Abril 2017, 16:25 pm »

Hola buenas, tengo un problema a la hora de eliminar determinado valor de hash con su clave y valor correspondientes. He buscado y lo normal sería utilizar la clausula delete de está manera:
Código
  1.  
  2. my %hashMap;
  3. $hashMap{"A"} = 1;
  4. $hashMAp{"B"} = 2;
  5. #Si quiero borrar un valor de este ejemplo, me basta con:
  6. delete $hashMap{"A"};
  7. #Y me borra la clave "A" y el valor 1.
  8.  
El problema que tengo es a la hora de trabajar con el hashMap ya que utilizo el módulo struct porque necesito otros tipos de datos y para trabajar es más sencillo, esto funcionaría de la siguiente manerar:
Código
  1.  
  2. struct( scalar => '$', a => '@', hashMap => '%', class => 'My_Other_Class' );
  3. $obj = new Myobj;
  4. #Para definir una clave valor lo unico que tengo que hacer es:
  5. $obj->hashMap("A" , 1);
  6. $obj->hashMap("B" , 2);
  7. #Y para obtener el valor;
  8. $obj->hashMap("A");
  9. #Ahora bien, si quiero borrar lo logico seria esto:
  10. delete $obj->hashMap("A"); #Pero justo aqui falla
  11.  
Como veis al hacer el delete sobre esa referencia me falla. El error que me muestra el compilador es que delete no puede borrar un objeto que no es un hash, o array.
Por eso mi duda es como hacer para poder borrar esa clave/valor de mi hashMap.
Dejo aqui el modulo struct por si alguien no lo conoce: http://perldoc.perl.org/Class/Struct.html

Espero que me podais ayudar , muchas gracias.
Un saludo


« Última modificación: 25 Abril 2017, 01:21 am por Ocelot1994 » En línea

explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: Problema en perl con Hash
« Respuesta #1 en: 24 Abril 2017, 22:01 pm »

Debes hacer lo siguiente: debes obtener una referencia al hash subyacente, de esta manera:

my $hash_ref = $obj->hashMap();

Y ahora ya puedes borrar ese elemento:

delete $hash_ref->{A};

Fíjate en lo que dice el manual, en la sección «Element Types and Accessor Methods», en el apartado Hash.



En línea

Ocelot1994

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: Problema en perl con Hash
« Respuesta #2 en: 25 Abril 2017, 01:20 am »

Todo correcto, ya puedo borrar gracias a ti.
Muchas gracias y un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[MOD] Se me resiste un foro :@ Problema con la SQL injection y el hash md5
Nivel Web
h1t0k1r1 4 3,929 Último mensaje 1 Octubre 2004, 23:49 pm
por eLank0
Problema cargando hash MD5
Hacking
hused 2 2,828 Último mensaje 5 Marzo 2010, 17:56 pm
por kamsky
Problema con hash SHA-1(HMAC)
Hacking
Wired 0 2,767 Último mensaje 13 Noviembre 2010, 04:51 am
por Wired
Problema con función hash con peso
Programación C/C++
Josh96 4 2,577 Último mensaje 13 Abril 2015, 01:57 am
por Josh96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines