🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #1604

Re: Perl: analogo a #include ?

#1604
From: Miguel Farah
Date: Fri, 14 Jul 2006 15:34
77 lines
3444 bytes
Waldo wrote:
> Miguel Farah wrote:
>
> > Estoy trabajando en un programa en Perl. La primera mitad del código
> > fuente consiste en muchas declaraciones de variables, como esto:
> >
> > $padre{"12"}="-23"; $madre{"12"}="-24"; $conyuges{"12"}=",";
>
> [... equivalente de #include...]
>
> Esa es una curiosa manera de escribir todos esos datos. Por que no
> mejor
>
> %padre = ( 12 => -23, ... );
> %madre = ( 12 => -24, ... ); ?

Porque voy leyendo un archivo GEDCOM, segmento por segmento, que dice
cosas como esto:

0 @I63@ INDI
1 NAME Juan /Soto/
1 SEX M
1 CHAN
2 DATE 19 JUN 2006
1 BIRT
2 DATE 19 MAR 1942
2 PLAC Santiago, Chile
1 BAPM
2 PLAC Santiago, Chile
1 OCCU vago empedernido
1 NATI chilena
1 RELI pastafariano
1 FAMS @F12@
1 FAMC @F41@

Este primer bloque indica los datos de una persona (nombre, sexo,
etcétera) y la(s) familia(s) en la(s) que es cónyuge y la en que es
hijo.

Luego, un segundo segmento dice cosas como esto otro:

0 @F91@ FAM
1 HUSB @I356@
1 WIFE @I357@
1 CHIL @I358@
1 CHIL @I359@
1 CHIL @I360@
1 CHIL @I157@
1 CHIL @I361@
1 CHIL @I362@
1 CHIL @I363@
1 CHIL @I364@
1 CHIL @I365@

Aquí se define una familia, indicando los códigos del marido, mujer e
hijos.

Por esto, parte de las asignaciones son más fáciles de hacer si vas
línea por línea (las de hijos, en particular:
[$hijos{"356"}.="358,";]).
Como además almaceno los datos de hijos y cónyuges como strings que
contienen una lista interna (",13,14,15,16,"), prefiero manejar TODOS
los códigos de individuos de la misma manera, para evitar
complicaciones
con las conversiones posteriores [onda if "23" eq ("".$individuo) , con
$invididuo==63 ].

Como dice el viejo dicho, TMTOWTDI. :-)



> El `do "archivo.pl"' que ya descubriste funciona bien, pero si tus
> varios hashes son medianamente grandes, puedes considerar usar el
> modulo "Storable". Como siempre, perldoc Storable te cuenta los
> detalles.

No tenía idea. Gracias por el dato.
Technical Details
Message-ID: <1152891289.353750.194440@p79g2000cwp.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!p79g2000cwp.googlegroups.com!not-for-mail
References: <1152650449.974331.107490@h48g2000cwc.googlegroups.com> <1152847994.871436.128160@h48g2000cwc.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,1e0792ae33bdfe35
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!p79g2000cwp.googlegroups.com!not-for-mail
From: "Miguel Farah" <miguel@farah.cl>
Newsgroups: chile.comp.programacion
Subject: Re: Perl: analogo a #include ?
Date: 14 Jul 2006 08:34:49 -0700
Organization: http://groups.google.com
Lines: 78
Message-ID: <1152891289.353750.194440@p79g2000cwp.googlegroups.com>
References: <1152650449.974331.107490@h48g2000cwc.googlegroups.com>
   <1152847994.871436.128160@h48g2000cwc.googlegroups.com>
NNTP-Posting-Host: 64.117.137.69
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1152891294 28412 127.0.0.1 (14 Jul 2006 15:34:54 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Fri, 14 Jul 2006 15:34:54 +0000 (UTC)
In-Reply-To: <1152847994.871436.128160@h48g2000cwc.googlegroups.com>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322),gzip(gfe),gzip(gfe)
X-HTTP-Via: 1.0 navegador (NetCache NetApp/6.0.3), 1.0 navegador (NetCache NetApp/6.0.3)
Complaints-To: groups-abuse@google.com
Injection-Info: p79g2000cwp.googlegroups.com; posting-host=64.117.137.69;
   posting-account=Gk5wgQwAAADH3zTvnNaPXDyNEGzIj-i1