From marcelo.magallon en gmail.com Thu Aug 4 19:00:26 2005 From: marcelo.magallon en gmail.com (Marcelo E. Magallon) Date: Thu, 4 Aug 2005 20:00:26 -0600 Subject: O'Reilly Perl User Groups Message-ID: <20050805020026.GA10958@jacinta.casa> Buenas, ya hay más o menos una docena de personas suscritas a esta lista. Una de las cosas que quería hacer era inscribir a costarica.pm como grupo de usuarios de Perl con O'Reilly. Entre otras cosas ellos piden que el grupo tenga cinco usuarios -- no estoy seguro como quieren verificar eso, pero en caso de que alguno *no* quiera ser incluído en esa lista por favor conteste brevemente este email diciendo eso. La otra cosa que ellos piden es que el grupo tenga un medio "oficial" para distribuir información. Eso con el fin de que la información que ellos envían llegue a los miembros del grupo. Además de la lista quiero sacar el rato para poner "noticias" en el sitio web. Cuando tenga eso les escribo haciéndoles la solicitud. Ellos enviarán (ir)regularmente alguna cantidad de información sobre conferencias y actividades (parcialmente) patrocinadas por ORA y relacionadas con Perl. También ofrecen descuentos en literatura de ellos. Cuando eso esté finalizado enviaré otra nota acá. Saludos, Marcelo From cpitty en bancouniversal.com Tue Aug 9 09:59:35 2005 From: cpitty en bancouniversal.com (Carlos A. Pitty L.) Date: Tue, 9 Aug 2005 11:59:35 -0500 Subject: Leer un fichero Message-ID: Buenas Tardes, Soy nuevo en la lista y en la utilización de Perl, agradezco mucho la ayuda que me puedan ofrecer. Necesito leer de un archivo que contiene cierta cantidad de líneas una línea en específico y luego esa línea descomponerla en datos más pequeños. Ya he logrado hacer que el script me traiga la línea que deseo, la guardo en un arreglo pero no he logrado descomponerla. Lo malo es que para descomponerla los datos no están separados por ningún carácter, por ejemplo, los tres primeros números significan algo, los dos siguientes otro dato, los cuatro siguientes otro dato y así lo mismo en cada línea. La parte que he hecho es así: #!/usr/bin/perl $cmd = "| grep "; $cmd .= "60371702"; $cmd .= " REN."; open(LOGREN,"$cmd") || die "No se encontro el archivo REN. ..."; @resul = ; chop (@resul); foreach $test(@resul) { print "$test\n"; } $longitud = length(@resul); print "Longitud : $longitud\n"; close (LOGREN); Con esto el script me despliega la línea en donde se encuentra 60371702 y la variable Longitud me trae como respuesta 1. No sé como puedo hacer para descomponer la línea en subpartes para trabajar con cada una de ellas en forma separada. La verdad no sé que parte estoy haciendo mal y agradecería mucho su ayuda. Carlos A. Pitty L. Banco Universal, S.A. Departamento de Informática Tel.: 775-4394 ext. 137 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://mail.pm.org/pipermail/costarica-pm/attachments/20050809/07e69d8d/attachment.html From marcelo.magallon en gmail.com Tue Aug 9 11:28:11 2005 From: marcelo.magallon en gmail.com (=?ISO-8859-1?Q?Marcelo_E=2E_Magall=F3n?=) Date: Tue, 9 Aug 2005 12:28:11 -0600 Subject: Leer un fichero In-Reply-To: <20050809165125.470BC17788@x6.develooper.com> References: <20050809165125.470BC17788@x6.develooper.com> Message-ID: <9371178905080911285578f55e@mail.gmail.com> On 8/9/05, Carlos A. Pitty L. wrote: > Necesito leer de un archivo que contiene cierta cantidad de líneas una línea > en específico y luego esa línea descomponerla en datos más pequeños. Ya he > logrado hacer que el script me traiga la línea que deseo, la guardo en un > arreglo pero no he logrado descomponerla. Lo malo es que para descomponerla > los datos no están separados por ningún carácter, por ejemplo, los tres > primeros números significan algo, los dos siguientes otro dato, los cuatro > siguientes otro dato y así lo mismo en cada línea. Si nos das un ejemplo de como se ve la línea es más simple ayudarte, pero con la descripción que ofrecés, esto debería ser un comienzo: #!/usr/bin/perl use warnings; use strict; # para todas las líneas while (<>) { # buscar las que contengan la hilera 60371702 next unless /60371702/; # y con esas hacer lo siguiente # 1. imprimirlas tal cual print; # 2. quitarles el caracter de "nueva línea" chomp; # 3. imprimir su longitud medida en caracteres print "Longitud: ", length($_), "\n"; my @c = split //; print "Primeros tres: ", join('', @c[0 .. 2]), "\n"; } escribís eso en un archivo, lo hacés ejecutable, y lo llamás con el nombre del archivo con los datos como argumento: $ ./trabaja REN -- Marcelo From cpitty en bancouniversal.com Tue Aug 9 13:50:56 2005 From: cpitty en bancouniversal.com (Carlos A. Pitty L.) Date: Tue, 9 Aug 2005 15:50:56 -0500 Subject: Leer un fichero In-Reply-To: <9371178905080911285578f55e@mail.gmail.com> Message-ID: Gracias por la respuesta tan pronta, para aclarar la explicación les envío un ejemplo, la línea se vería así: 0002006037170201050020000100020000 000508090010002... Ahora bien, lo que necesito es tomar los cuatro primeros números y almacenarlos en una variable ya que si es 0001 significan algo y si son 0002 significan otra cosa, luego tomo los 18 siguientes y los almaceno, luego los cuatro siguientes, luego los otro cuatros, etc. Lo que respondió el Sr. Magallón fue de mucha ayuda, sin embargo; no se como almacenarlo en una variable, cada vez que lo intento me manda un error. Gracias una vez mas... Carlos A. Pitty L. Banco Universal, S.A. Departamento de Informática Tel.: 775-4394 ext. 137 -----Mensaje original----- De: costarica-pm-bounces en pm.org [mailto:costarica-pm-bounces en pm.org] En nombre de Marcelo E. Magallón Enviado el: Martes, 09 de Agosto de 2005 01:28 p.m. Para: costarica-pm en pm.org Asunto: Re: Leer un fichero On 8/9/05, Carlos A. Pitty L. wrote: > Necesito leer de un archivo que contiene cierta cantidad de líneas una línea > en específico y luego esa línea descomponerla en datos más pequeños. Ya he > logrado hacer que el script me traiga la línea que deseo, la guardo en un > arreglo pero no he logrado descomponerla. Lo malo es que para descomponerla > los datos no están separados por ningún carácter, por ejemplo, los tres > primeros números significan algo, los dos siguientes otro dato, los cuatro > siguientes otro dato y así lo mismo en cada línea. Si nos das un ejemplo de como se ve la línea es más simple ayudarte, pero con la descripción que ofrecés, esto debería ser un comienzo: #!/usr/bin/perl use warnings; use strict; # para todas las líneas while (<>) { # buscar las que contengan la hilera 60371702 next unless /60371702/; # y con esas hacer lo siguiente # 1. imprimirlas tal cual print; # 2. quitarles el caracter de "nueva línea" chomp; # 3. imprimir su longitud medida en caracteres print "Longitud: ", length($_), "\n"; my @c = split //; print "Primeros tres: ", join('', @c[0 .. 2]), "\n"; } escribís eso en un archivo, lo hacés ejecutable, y lo llamás con el nombre del archivo con los datos como argumento: $ ./trabaja REN -- Marcelo __ Costarica-pm en pm.org http://mail.pm.org/mailman/listinfo/costarica-pm From marcelo.magallon en gmail.com Tue Aug 9 14:20:51 2005 From: marcelo.magallon en gmail.com (=?ISO-8859-1?Q?Marcelo_E=2E_Magall=F3n?=) Date: Tue, 9 Aug 2005 15:20:51 -0600 Subject: Leer un fichero In-Reply-To: <20050809204241.E3C5017796@x6.develooper.com> References: <9371178905080911285578f55e@mail.gmail.com> <20050809204241.E3C5017796@x6.develooper.com> Message-ID: <9371178905080914206ac7cf0c@mail.gmail.com> On 8/9/05, Carlos A. Pitty L. wrote: > Gracias por la respuesta tan pronta, para aclarar la explicación les envío > un ejemplo, la línea se vería así: > > 0002006037170201050020000100020000 000508090010002... > > Ahora bien, lo que necesito es tomar los cuatro primeros números y > almacenarlos en una variable ya que si es 0001 significan algo y si son 0002 > significan otra cosa, luego tomo los 18 siguientes y los almaceno, luego los > cuatro siguientes, luego los otro cuatros, etc. Hmm... hay más de una forma de trasquilar ese gato, pero ahorita no se me ocurre una limpia... Si todas las líneas se ven igual una cosa tipo: my @datos = /^(.{4})(.{18})(.{4})(.{4})/; hace lo que vos escribiste arriba. El operador m//, en contexto de lista, devuelve en una lista todos los elementos "capturados", es decir, todos los elementos que concordaron positivamente con cada patrón dentro de los paréntesis ( ). Con la expresión regular escrita arriba eso lo que hace es que busca cuatro caracteres cualesquiera (".{4}") y los "guarda" ("(.{4})"), luego busca 18 y los guarda, luego 4 y los guarda, etc. Luego para accesar la información nada más te fijás en $datos[0], $datos[1], etc. Si el formato de la línea depende del valor de los primeros cuatro caracteres, entonces es más simple algo así tal vez: my @c = split //; my $tipo = join '', splice(@c, 0, 4); if ($tipo eq '0001') { } elsif ($tipo eq '0002') { } ... Mirá la documentación de split, splice y join (e.g. perldoc -f split) -- Marcelo From marcelo.magallon en gmail.com Tue Aug 16 11:02:33 2005 From: marcelo.magallon en gmail.com (=?ISO-8859-1?Q?Marcelo_E=2E_Magall=F3n?=) Date: Tue, 16 Aug 2005 12:02:33 -0600 Subject: Scripts Message-ID: <93711789050816110270769ba8@mail.gmail.com> Buenas gente, en el wiki agregé http://costarica.pm.org/Scripts, para colocar los scripts que gusten. También le agregé al Kwiki el plugin Kwiki::PerlTidyBlocks, que básicamente quiere decir que cualquier cosa que se vea así: .perl #!/usr/bin/perl use strict; use warnings; exit 0; .perl la va a formatear con colores (de acuerdo con la sintaxis de Perl por supuesto). -- Marcelo From marcelo.magallon en gmail.com Wed Aug 31 17:20:43 2005 From: marcelo.magallon en gmail.com (Marcelo E. Magallon) Date: Wed, 31 Aug 2005 18:20:43 -0600 Subject: Las siete etapas del programador de Perl Message-ID: <20050901002043.GA12968@jacinta.casa> Hola, Seven Stages of a Perl Programmer by Tom Christiansen Novice 1. Thinks CGI and Perl are interchangeable terms. 2. Still thinks Perl looks like bad C code viewed over a noisy modem. 3. Is insecure about the concept of dollar signs. 4. Thinks Perl should be more like sh or tcl. 5. Has heard of the ``Unix mindset'', but hopes it's a treatable condition. 6. Can't figure out how to read input from the keyboard. 7. Thinks regular expressions are somebody cursing. 8. Wonders why no one can give him a straight answer about whether Perl is compiled or interpreted. Initiate 1. Has begun to learn about $_ -- and doesn't like it a bit. 2. Thinks -w flag is a waste of time. 3. Thinks Perl should be more like C++ or Java. 4. Is still trying to figure why Perl has two different kinds of arrays. 5. Knows how to use perlbug, but sends in bogus bug reports. 6. Has been bitten by implicit context conversions, but hasn't caught on yet. 7. Can't keep == separate from eq, and thinks that + should concatenate strings. User 1. Thinks Perl is just for text processing. 2. Uses the Perl debugger. 3. Has used other people's modules. 4. Wonders what an object is. 5. Knows their way around CPAN. 6. Knows the difference between local and my. 7. Uses . 8. Is still trying to figure what references are for. 9. Thinks Perl should be more like scheme or eiffel. 10. Submits real bug reports with perlbug. Expert 1. Write JAPHs to impress their friends and annoy their coworkers. 2. Begins all programs with use strict. 3. Thinks Perl should just be Perl. 4. Has taken enough advantage of cryptocontext to annoy others. 5. Knows how to create records and objects with hash refs. 6. Uses syscall to get at undocumented operating system calls. 7. Curses the flexibility of the Perl object system. 8. Uses /e in substitutes. 9. Has begun to wonder what typeglobs are for. 10. Has written their own modules in Perl. 11. Begins to look at all data in terms of regular expressions. 12. Understands why regexes can't match nested data. 13. Rewrites minor utilities in Perl. Hacker 1. Writes games in Perl. 2. Has written extension modules in C. 3. Uses AUTOLOAD and closures in curious ways. 4. Appreciates the aethetics of the Schwartzian Transform. 5. Delights in the flexibility of the Perl object system. 6. Has written their own pod2XXX translator. 7. Understands the output from Perl -Dflags. 8. Accesses the Perl symbol table directly. 9. Submits bug reports with working patches. 10. Edits files using a special Perl-embedded version of vi or emacs. 11. Has contributed modules, manpages, and tools to the standard Perl distribution. Guru 1. Can answer any Perl question instantly. 2. Can write anything in Perl -- and does. 3. Takes advantage of undocumented language features. 4. Writes code that gives even Larry pause. 5. Implements opaque objects and compiled regexes using closures. 6. Can read and understand the output of the perl-to-C compiler. 7. Embeds Perl interpreters in larger applications. 8. Has written their own -d:debugger module. 9. Used object-oriented programming before it existed. 10. Is debating taking their turn with the patch pumpkin. Wizard 1. Is on a first-name basis with Larry's wife. 2. Has written or rewritten major areas in the Perl compiler or interpreter. 3. Is thinking about rewriting the regex engine, the memory allocator, or the garbage collector. 4. Doesn't write games in Perl, because they realize that Perl itself is the game.