• Publicidad

Cantidad variable de hashes

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cantidad variable de hashes

Notapor perleando_apenas » 2009-04-29 15:12 @675

¡Hola nuevamente!

Tengo la siguiente situación y quiero ver si pueden ayudarme.

Estoy haciendo un script que lee un archivo de configuración que trae un conjunto de datos de la forma:
Código: Seleccionar todo
#def tabla a:
[%a]
a1|a2|a3|a4|a5
#def tabla b:
[%b]
b1|b2|b3|b4|b5
#def tabla c:
[%c]
c1|c2|c3|c4|c5
#def tabla d:
[%d]
d1|d2|d3|d4|d5


Como ven, cada par de líneas hace la "definición" de una tabla. La cantidad y nombre de la tabla es variable. Mi intención es crear un hash por cada "tabla" que venga en el archivo (todas tendrían la misma cantidad de llaves) o bien definir un único hash para todas las tablas y, en este último caso, el nombre de la tabla sería otra llave (espero haberme explicado bien :)).

Mis dudas son:
- ¿son buenas mis opciones?
- ¿cuál es la mejor?, y
- bueno, si la mejor resulta ser un hash por tabla, lamento decir que no sé cómo hacerlo ni si se puede.

Así que les dejo mi consulta. Ojalá puedan ayudarme.

Saludos y gracias.
perleando_apenas
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2009-04-17 10:27 @477

Publicidad

Notapor explorer » 2009-04-29 15:26 @685

Aunque no veo claramente cuáles serían las claves de los diccionarios, deberías elegir la estructura de datos que más se ajuste a lo que luego quieres hacer con ella.

Normalmente, lo más sencillo siempre es lo mejor.

Si tienes varios diccionarios, debes controlarles todos de alguna manera.

Si solo tienes un diccionario, debes saber cómo acceder a su contenido.

Actualización: Quizás la mejor opción es la que comentas: un diccionario cuyas claves sean los nombres de las tablas, y cada valor es un arreglo con los valores de la tabla, uno por cada elemento.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

... ¡por ahí va! ...

Notapor perleando_apenas » 2009-04-30 11:26 @518

¡Gracias, explorer! ... Efectivamente, la solución que estoy intentando implementar va por un único hash donde una de las claves sea el nombre de la tabla.
perleando_apenas
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2009-04-17 10:27 @477

Notapor explorer » 2009-05-02 04:46 @240

Algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my $nombre_hash;
my %hash;

open  FICHERO, '<', 'kk.txt' or die;

while (<FICHERO>) {
    chomp;
   
    if (/\[\%(.+)\]/) {
        $nombre_hash = $1;
    }
   
    if (/\|/) {
        my @valores = split '\|';
        $hash{$nombre_hash} = [ @valores ];
    }
}

close FICHERO;

use Data::Dumper;
print Dumper \%hash;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Sale:
Código: Seleccionar todo
$VAR1 = {
          'c' => [
                   'c1',
                   'c2',
                   'c3',
                   'c4',
                   'c5'
                 ],
          'a' => [
                   'a1',
                   'a2',
                   'a3',
                   'a4',
                   'a5'
                 ],
          'b' => [
                   'b1',
                   'b2',
                   'b3',
                   'b4',
                   'b5'
                 ],
          'd' => [
                   'd1',
                   'd2',
                   'd3',
                   'd4',
                   'd5'
                 ]
        };
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados

cron