Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Mientras que Perl por defecto intentará usar las palabras peladas como cadenas, el modificador +
también se puede usar para indicar a Perl que la clave no debe interpolarse sino ejecutarse, y el
resultado de la ejecución se usa como una clave:
my %employee = ( name => 'John Doe', shift => 'night' );
# this example will print 'night'
print $employee{shift};
# but this one will execute [shift][1], extracting first element from @_,
# and use result as a key
print $employee{+shift};
Al igual que con las matrices, puede acceder a varios elementos hash al mismo tiempo. Esto se
llama una porción de hash . El valor resultante es una lista, así que use @ sigil:
my @words = @translations_of_hello{'spanish', 'german'}; # ('Hola', 'Hallo')
Iterar sobre las claves de un hash con keys keys devolverá los elementos en un orden aleatorio.
Combina con el sort si lo deseas.
for my $lang (sort keys %translations_of_hello) {
say $translations_of_hello{$lang};
}
Si no necesita las claves como en el ejemplo anterior, los values devuelven los valores de hash
directamente:
for my $translation (values %translations_of_hello) {
say $translation;
}
También puede usar un bucle while con each para iterar sobre el hash. De esta manera, obtendrá
la clave y el valor al mismo tiempo, sin una búsqueda de valor por separado. Sin embargo, se
desaconseja su uso, ya que each puede romper en formas de confusión.
# DISCOURAGED
while (my ($lang, $translation) = each %translations_of_hello) {
say $translation;
}
El acceso a los elementos no configurados devuelve undef, no un error:
my $italian = $translations_of_hello{'italian'}; # undef
map y el aplanamiento de listas se pueden utilizar para crear hashes a partir de matrices. Esta es
una forma popular de crear un 'conjunto' de valores, por ejemplo, para verificar rápidamente si un
valor está en @elems . Esta operación generalmente toma tiempo O (n) (es decir, proporcional al
número de elementos) pero se puede hacer en tiempo constante (O (1)) al convertir la lista en un
hash:
https://riptutorial.com/es/home 118