• Publicidad

Eliminar un array 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.

Eliminar un array de un hash

Notapor xagutxu_perez » 2008-06-16 11:22 @515

¿Cómo se elimina un par compuesto de un hash?

Suponiendo que tenemos un hash de arrays:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
%hash = (scores => (1 3 1 2 3 3 1 5 2 3),
              grupos => (A G H V E T D A A H),
              marcas => (X X Y X Y Y Y Y X X));
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Si quiero quitar el array "grupo", por ejemplo, ¿cómo puedo hacerlo? Puedo utilizar "delete" como en los hashes simples?

Gracias,

Xagutxu
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Publicidad

Re: Eliminar un array de un hash

Notapor kidd » 2008-06-16 11:51 @535

xagutxu_perez escribiste:Si quiero quitar el array "grupo", por ejemplo, ¿cómo puedo hacerlo? Puedo utilizar "delete" como en los hashes simples?


Si, estás en lo correcto.
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2008-06-16 12:02 @543

'Eso' que has mostrado no es un hash de array... ni es nada.
Esa declaración está mal:
Código: Seleccionar todo
Number found where operator expected at ./kk.pl line 4, near "1 3"
        (Missing operator before  3?)
Number found where operator expected at ./kk.pl line 4, near "3 1"
        (Missing operator before  1?)
Number found where operator expected at ./kk.pl line 4, near "1 2"
        (Missing operator before  2?)
Number found where operator expected at ./kk.pl line 4, near "2 3"
        (Missing operator before  3?)
Number found where operator expected at ./kk.pl line 4, near "3 3"
        (Missing operator before  3?)
Number found where operator expected at ./kk.pl line 4, near "3 1"
        (Missing operator before  1?)
Number found where operator expected at ./kk.pl line 4, near "1 5"
        (Missing operator before  5?)
Number found where operator expected at ./kk.pl line 4, near "5 2"
        (Missing operator before  2?)
Number found where operator expected at ./kk.pl line 4, near "2 3"
        (Missing operator before  3?)
syntax error at ./kk.pl line 4, near "1 3"
Execution of ./kk.pl aborted due to compilation errors.

Esta es la correcta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
%hash = (
    scores => [qw(1 3 1 2 3 3 1 5 2 3)],
    grupos => [qw(A G H V E T D A A H)],
    marcas => [qw(X X Y X Y Y Y Y X X)],
);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
O esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
%hash = (
    scores => [ 1,   3,   1,   2,   3,   3,   1,   5,   2,   3 ],
    grupos => ['A', 'G', 'H', 'V', 'E', 'T', 'D', 'A', 'A', 'H'],
    marcas => ['X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'Y', 'X', 'X'],
);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


(Somos algo 'estrictos' por aquí).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor xagutxu_perez » 2008-06-16 12:10 @548

Sí, es cierto, lo he puesto a modo de ejemplo, sin tener en cuenta la sintaxis de Perl.

De todas formas, para eliminar un array de un hash, si hago:

delete @hash{grupos}

No obtengo los resultados esperados. ¿Hay algo que hago mal?
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Notapor explorer » 2008-06-16 12:16 @553

Para eliminar una entrada de un hash:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
delete $hash{grupos};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Para eliminar el array de una entrada de un hash:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$hash{grupos} = ();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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