No entiendo la última línea de esta función desde Programming Perl 3e.¿Cómo funciona este Perl grep para determinar la unión de varios hashes?
Así es como se podría escribir una función que hace una especie de intersección de conjuntos devolviendo una lista de claves que ocurren en todos los hashes que se le pasan:
@common = inter(\%foo, \%bar, \%joe); sub inter { my %seen; for my $href (@_) { while (my $k = each %$href) { $seen{$k}++; } } return grep { $seen{$_} == @_ } keys %seen; }
entiendo que %seen
es un hash de los cuales asigna cada clave a la cantidad de veces que se encontró en cualquiera de los valores proporcionados a la función.
Me gusta esta edición más reciente. Buena respuesta, DVK. – spazm
Excelente. Me salvó el día. De hecho, escribí un fragmento de código para entender lo que estaba pasando y me estaba golpeando la cabeza a casi una hora, pero no pude entenderlo. – anukalp