[perl] como se usan los hash?
Raymond Hall
kovalski@iris.razteca.org.mx
Thu, 29 Oct 1998 00:24:19 -0600 (EST)
On Tue, 27 Oct 1998, RUBEN wrote:
> llevo un rato peleandome con unos hashes. A ver si alguien sabe como
...
> un arreglo. He estado dando vueltas alrededor de algo como esto:
>
> @arreglo_chido{'llave'} = (1,2,3,4,56);
>
> pero cuando lo veo:
>
> @temp = @arreglo_chido{'llave'};print @temp;
* Solución rápida:
$arreglo_chido{'llave'} = [(1,2,3,4,56)];
@temp = @{$arreglo_chido{'llave'}};
print @temp;
* Explicación:
$arreglo_chido{'llave'} = [(1,2,3,4,56)];
^ `-------v-------'
| Dado que un elemento del hash sólo puede ser un escalar
| lo que hacemos es asignarle un "arreglo anónimo", que en
| realidad lo que hace es "alocar" el espacio y regresarnos
| su dirección, es decir un puntero
\
`- nos estamos refiriendo a UN elemento del hash, por lo que lo
accedemos con $ (dado que es un escalar)
Ahora bien, para acceder a este array tendrás que usar la sintaxis de perl
para indirección, que aunque parece tenebrosa es mucho más amigable que C.
El $i-ésimo elemento: $escalar = $arreglo_chido{'llave'}->[$i];
El array completo; @array = @{$arreglo_chido{'llave'}};
**nótese lo que hicimos: @{ ...(algo que nos dá un -> a un array)... }
Una "rebanada": ($la,$mas,$sabrosa) = @{$arreglo_chido{'llave'}}[1-3];
...otra manera: @rebanada = @arreglo_chido{'llave'}->[2-3];
* Tip: man perlref, man perlsyn, man perlvar, man perldata
Saludos,
Raymond Hall
--
`` At one point, the President inserted a cigar into Ms. Lewinsky's
vagina, then put the cigar in his mouth and said: "It tastes good." ''
K. Starr
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text : cancelacion perl