Article View: chile.comp.programacion
Article #1604Re: Perl: analogo a #include ?
From: Miguel Farah
Date: Fri, 14 Jul 2006 15:34
Date: Fri, 14 Jul 2006 15:34
77 lines
3444 bytes
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-mailReferences:
<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