Saltar al contenido

¿Cómo puedo usar hashes como argumentos para subrutinas en Perl?

Solución:

Los hash se contraen en listas planas cuando los pasa a la función. Entonces, cuando cambia un valor de los argumentos de la función, solo obtiene un valor. Lo que quieres hacer es pasar los hash por referencia.

do_stuff_with_hashes(%first_hash, %second_hash);

Pero luego tienes que trabajar con los hash como referencias.

my $first_hash  = shift;
my $second_hash = shift;

Un poco tarde pero

Como se ha dicho, debe pasar referencias, no hash.

do_stuff_with_hashes(%first_hash, %second_hash);

Pero si necesita / quiere usar sus hashes como tal, puede desreferenciarlos inmediatamente.

sub do_stuff_with_hashes {
    my %first_hash = %{shift()};
    my %second_hash = %{shift()};
};

Las referencias hash son el camino a seguir, como han señalado los demás.

Proporcionar otra forma de hacer esto solo por diversión … porque ¿quién necesita variables temporales?

do_stuff_with_hashes( { gen_first_hash() }, { gen_second_hash() } );

Aquí solo está creando referencias hash sobre la marcha (a través de las llaves alrededor de las llamadas a la función) para usar en su función do_stuff_with_hashes. Esto no es nada especial, los otros métodos son igualmente válidos y probablemente más claros. Esto podría ayudar en el futuro si ve esta actividad en sus viajes como alguien nuevo en Perl.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *