Soy bastante nuevo en Perl, así que discúlpeme si esto parece una simple pregunta ...Perl ¿Cómo recupero una matriz de un hash de matrices?
De todos modos, tengo un hash de matrices y estoy tratando de recuperar una de las matrices en el hash, pero todo lo que puedo obtener es el tamaño escalar de la matriz.
%HoA = a hash of arrays
$key = some key in the hash
foreach $nextItem (@HoA{$key}) {
do a bunch of stuff with $nextItem
}
Cuando hago esto, $ nextItem siempre es sólo el tamaño de la matriz y el bucle sólo se ejecuta a través de una sola vez. He intentado imprimir la siguiente:
@HoA{$key}
$HoA{$key}
@$HoA{$key}
Los dos primeros dame el tamaño escalares y la tercera me da nada ... lo que me estoy perdiendo aquí?
ACTUALIZACIÓN: Me pregunto si mi problema es realmente la forma en que estoy agregando las matrices al hash. Esto es lo que estoy haciendo:
@HoA{$key} = split(/ /, $list);
¿Eso se pega la matriz en el hash, o el tamaño de la matriz en el hash?
ACTUALIZACIÓN 2: Me trató el siguiente bloque de código:
my $key = "TEST";
my %HoA =();
my @testarray = (1, 2, 3);
@HoA{$key} = @testarray;
print Dumper(%HoA);
está la salida Aquí:
$VAR1 = 'TEST';
$VAR2 = 1;
¿Por qué sólo pegando el primer valor de la matriz en?
he intentado . Simplemente devuelve un tamaño de cero y el bucle ni siquiera se ejecuta una vez. – mrplainswalker
@mrplainswalker - Intente imprimir el contenido del hash y asegúrese de que tenga la estructura que cree que tiene. Quizás tu clave no está definida o no es una matriz como crees. Puedes usar Data :: Dumper; Dumper (% HoA) para verificarlo.También puedes hacer if (defined ($ HoA {$ key})) {print "Defined"} como una prueba rápida también – scrappedcola
Ok, probé la función Dumper para ver lo que había en el hash, y tienes razón. ..no es lo que esperaba. Cada valor es solo el primer elemento de la matriz en lugar de la matriz completa. – mrplainswalker