Manejo de Hash
Un Hash o arreglo asociativo en Perl es una estructura de datos, que permite asociar una clave con un valor, comunmente denominado pareja clave/valor. Es importante señalar que las parejas clave/valor no están ordenadas según un criterio específico dentro del Hash.
Crear e inicializar un Hash
- Crear un hash vacío:
my %hash = ();
- Crear una referecia a un hash vacío:
my $hash_ref = {};
- Crear un hash e inicalizar con valores
my %hash = (nombre => 'Pedro', apellido => 'Perez');
- Crear una referencia a un hash con inicialización de valores
my %hash_ref = {nombre => 'Pedro', apellido => 'Perez'};
- Crear una referencia a un Hash existente
my %autor = (
'nombre' => "Mario",
'cargo' => "Administrador"
);
my $hash_ref = \%autor;
</div>
<div class='pageitem'>
Borrar valores de un Hash
- Borrar un valor de un hash:
delete $hash{$clave}
- Borrar un valor de una referencia a un hash:
delete $hash_ref->{$clave};
- Limpiar una variable de tipo hash:
delete $hash{$_} for (keys %hash);
- Limpiar una referencia a un hash:
delete $hash_ref->{$_} for (keys %$hash_ref);
Agregar valores a un Hash
- Agregar valores a una variable de tipo hash:
$hash{nombre} = 'Pedro';
$clave = 'nombre';
$valor = 'Pedro';
$hash{$clave} = $valor;
- Agregar varios valores a la vez a un hash
%hash = (nombre => 'Pedro', apellido => 'Perez');
Copiar un Hash
- Hacer una copia de una variable de tipo hash:
my %hash_copia = %hash_original;
- Hacer una copiar de una referencia a un hash:
my $hash_ref_copia =$hash_ref_original;
Obtener cada par clave/valor de un Hash
- Imprimir cada par clave/valor de un hash:
while ( my ($clave, $valor) = each(%hash) ) {
print "$clave => $valor\n";
}
for my $clave ( keys %hash ) {
my $valor = $hash{$clave};
print "$clave => $valor\n";
}
print map "$_ = $hash{$_}\n", keys %hash
- Imprimir cada par clave/valor de una referencia a un hash:
while ( my ($clave, $valor) = each(% {$hash_ref}) ) {
print "$clave => $valor\n";
}
Obtener el tamaño de un Hash
print "Tamaño del hash: " . keys(%hash) . "\n";
Determinar si un valor existe en un Hash, si esta definido y si su valor es verdadero
print "El valor EXISTE, pero puede estar indefinido.\n" if exists $hash{ $clave };
print "El valor esta DEFINIDO, pero puede ser falso.\n" if defined $hash{ $clave };
print "El valor EXISTE y es VERDADERO.\n" if $hash{ $clave };