Leer recursivamente un HASH
Publicado: 2017-06-27 04:12 @217
Buenos días:
Tengo un HASH con esta estructura:
Quiero pasar cada llave a otro hash, poniendo cada llave asociada a la ruta que lleva hasta ella:
a = a
b = a/b
...
g = a/f/g
Puedo hacerlo con una solución poco elegante (anidando bucles que leen las llaves):
¿Habría alguna forma de recorrerlo hasta la profundidad que fuese? Con los bucles foreach doy por hecho que hay hasta 3 niveles de anidamiento pero no siempre será así.
He pensado en hacerlo con referencias y con una función pero no sé si voy bien encaminado.
Un saludo
Gracias
Un saludo
Tengo un HASH con esta estructura:
Using perl Syntax Highlighting
- my %EW =
- (
- 'a' =>
- {
- 'b'=> {},
- 'c' => {},
- 'd' => {},
- 'e' => {},
- 'f' =>
- {
- 'g' => {},
- 'h' => {},
- 'i' => {}
- },
- 'j' => {}
- }
- );
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Quiero pasar cada llave a otro hash, poniendo cada llave asociada a la ruta que lleva hasta ella:
a = a
b = a/b
...
g = a/f/g
Puedo hacerlo con una solución poco elegante (anidando bucles que leen las llaves):
Using perl Syntax Highlighting
- foreach my $n1 (keys %EW)
- {
- $ET{$n1} = "$n1/";
- foreach my $n2 (keys $EW{$n1})
- {
- $ET{$n2} = "$n1/$n2/";
- foreach my $n3 (keys $EW{$n1}{$n2})
- {
- $ET{$n3} = "$n1/$n2/$n3/";
- }
- }
- }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿Habría alguna forma de recorrerlo hasta la profundidad que fuese? Con los bucles foreach doy por hecho que hay hasta 3 niveles de anidamiento pero no siempre será así.
He pensado en hacerlo con referencias y con una función pero no sé si voy bien encaminado.
Un saludo
Gracias
Un saludo