Perl: Tablas hash
Perl: Tablas hash
A continuación el manejo de tablas hash en Perl en forma resumida.A diferencia de los arreglos, las tablas hash permiten el acceso por medio de índices llamados claves en vez de utilizar valores numéricos para acceder al contenido.
Una tabla hash contiene dos valores a los cuales se hacen referencia, la clave y el valor asociado a esa clave.
El libro Learning Perl 5,de Schwartz explica bastante bien el tema, los ejemplos han sido adaptados del mismo.
Al final del artículo un ejemplo para copiar/pegar e ir probando.
Inicializar una tabla hash
El símbolo porcentaje % se refiere a la tabla hash, ejemplo %tabla_hash.Ejemplos de inicializaciones
my %tabla_hash=(
"fred"=>"flintstone",
"dino"=>undef,
"barney" =>"rubble",
"betty" =>"rubble",
);
Otra forma es
definirlo como array organizando cada par clave-valor.
my %otra_tabla=(“clave1”,
1,”clave2”, 2, “clave3”, 3);
Acceder y asignar valores a una tabla hash
Para acceder al contenido de una tabla
hash se invoca el valor de la clave.
$valor=$tabla_hash{$clave}
Esto asigna el contenido de la tabla hash a una variable. Se utiliza
las llaves para referenciar los valores.$tabla_hash{$clave}=0 Para guardar el valor cero en la tabla hash.
$contador = keys %tabla_hash Contar el número de elementos de una tabla hash.
*** Especial atención a lo siguiente: el símbolo $ corresponde cuando se asignan valores en forma escalar. El signo % se utiliza para referirse a la tabla completa.
Funciones para tablas hash
keys,
asigna a un arreglo el listado de claves de una tabla hash.
value,
asigna a un arreglo el listado de valores de una tabla hash.
Uso de las
funciones keys y values
my %tabla_hash = ("a" => 1, "b" => 2,
"c" => 3);
my @claves = keys %tabla_hash;
my @valores = values %tabla_hash;
each Devuelve un par clave-valor, se utiliza para recorridos de una tabla hash.
while ( ($clave, $valor) = each %tabla_hash ) {
print "$key => $valor\n";
}
exists Verifica la existencia de una clave
if (exists $tabla_hash{"algo"}) {
print "existe en la tabla algo\n";
}
delete Borra un elemento de la tabla según un valor de clave asignado.
my $clave = "miclave";
delete $tabla_hash{$clave};
------------------------------ CORTAR AQUI ------------------------------
#!/usr/bin/perl use 5.006; use strict; use warnings; ############################################ # Manejo de tablas hash # Ejemplos basados en Schwartz - Learning Perl 5 ############################################ # Definir una tabla hash y recorrerla. ############################################ my %tabla_hash=( "fred"=>"flintstone", "dino"=>"nada", "barney" =>"violeta", "betty" =>"rubble", ); my ($clave, $valor,$unavariable,$otraclave); ############################################ #recorrer tabla hash print "\n============= Recorrer una tabla has utilizando while ===================\n"; while (($clave,$valor)=each %tabla_hash){ print "$clave -> $valor \n"; } ############################################ #otra forma de recorrerla print "\n============= Otra forma de recorrer una tabla has utilizando foreach ===================\n"; foreach $clave (sort keys %tabla_hash){ $valor=$tabla_hash{$clave}; print "$clave -> $valor \n"; } #asignacion de un valor a la tabla hash $unavariable=10; $otraclave="dino"; #establece la clave a buscar $tabla_hash{$otraclave}="amarillo"; print $tabla_hash{$otraclave}."\n";------------------------------ CORTAR AQUI ------------------------------
Muy util.
ResponderEliminarGracias.