From emhn at telcel.net.ve Fri Aug 3 14:53:33 2001 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:25 2004 Subject: Linda manera de cerrar varios archivos... Message-ID: Hoy aprend? ?sta linda manera de cerrar muchos archivos (cortes?a de Randall Schwartz en Perl Monks). ?Cu?ntas veces tienen un programa con muchos archivos abiertos a la vez y tienen que cerrarlos al final? T?pico caso... open FOO "foo.txt"; open BAR ">bar.txt"; open BAZ "baz.txt"; open QUX ">qux.txt"; ... close FOO; close BAR; close BAZ; close QUX; Y como buenos programadores responsables tienen sendos 'or die' para cada close... close FOO or die "No puedo cerrar FOO $!\n"; close BAR or die "No puedo cerrar BAR $!\n"; close BAZ or die "No puedo cerrar BAZ $!\n"; close QUX or die "No puedo cerrar QUX $!\n"; ?Terrible! ?Qu? tal ?sto? close $_ or die "No puedo cerrar $_ $!\n" for qw/FOO BAR BAZ QUX/; Muuuuy elegante. -- Ernesto Hern?ndez-Novich - Running Linux 2.4.5 i686 - Unix: Live free or die! -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/E d+(++) s+: a C+++$ UBLAVHIOSC*++++$ P++++$ L+++$ E- W+ N++ o K++ w--- O- M- V PS+ PE Y+ PGP>++ t+ 5 X+ R* tv+ b++ DI+++$ D++ G++ e++ h r++ y+ -----END GEEK CODE BLOCK----- ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Mon Aug 6 19:48:53 2001 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:25 2004 Subject: Refresh del Netscape In-Reply-To: <3B675F57.BBDE0483@cantv.net> Message-ID: On Tue, 31 Jul 2001, hans olzem wrote: > asi seleccione una foto: > if($q->param('pictures')) { > sql(sprintf "select lo_export(pictures.jpg, '/tmp/t1.jpg' ) from > pictures where jpg = '%s'",$q->param('pics.selected')); > } > > la qual quize mostrar en la pantalla: > > print " width=260>"; > > Con la primera foto al arancar Netscape va bien. > Seleccionando otra foto si cambia el "/tmp/t1.jpg" > y actaliza la lista de la base de datos, pero sigue > con la foto anterior. > > Por que Netscape no lee de nuevo el "/tmp/t1.jpg". Porque _no_ tiene por qu? hacerlo. Al indicarle un archivo local, Netscape asume que es inmutable a menos que reciba un encabezado HTTP de "no cache"; aunque aparenta ser un problema de PBD (Programmer Brain Damage) en realidad es bastante pr?ctico. La soluci?n est? en que no uses un URL file: sino que uses un _programa_ que "genere" la imagen, de manera que puedas mandar el encabezado de no-cache. Y por supuesto que el programa se hace en Perl :-) my $image = '/tmp/t1.jpg'; print $q->img( { src => "/cgi-bin/pushimage.pl?file=$myfile", height => '200', width => '260' } ); Mientras pushimage.pl puede ser algo como: #!/usr/bin/perl -w use CGI; my $q = new CGI; my $f = $q->param('file'); print $q->header( { type => 'image/jpeg', expires => 'now' } ); open I,$f or die "miserably $!\n"; binmode STDOUT; while { print; } close I; Dado que el nombre del archivo es parametrizable, puedes utilizar las facilidades de Perl para generar nombres _temporales_ ?nicos de modo que tu aplicaci?n sea "multiusuario" sin inconvenientes. -- Ernesto Hern?ndez-Novich - Running Linux 2.2.19 i686 - Unix: Live free or die! -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS d+(-) s+: a C+++$ UBLAVHIOSC++++$ P++++$ L+++$ E- W+ N++ ?o ?K w--- O- M- V PS+ PE Y+ PGP>++ t+ 5 X+ R* tv+ b++ DI+++$ D++ G>++ e++ h+ r+ y++ -----END GEEK CODE BLOCK----- ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Fri Aug 24 09:18:06 2001 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:25 2004 Subject: automatizacion con perl In-Reply-To: <200108241338.f7ODcC901548@elpoli3.unexpo.edu.ve> Message-ID: On Fri, 24 Aug 2001 fperez@bqto.unexpo.edu.ve wrote: > Tengo una pagina web que tiene una galeria de fotos y me gustaria saber > si con perl puedo crear un cgi con el cual yo solo tenga que subir las > fotosd nuevas y el me actualice la pagina automatica mente. Si es asi > donde puedo encontar informacion. man CGI (CGI es el m?dulo Perl para escribir CGIs :-) Si $q es un CGI, entonces algo como $q->filefield(name => 'thefile') genera un campo en la forma para que puedas seleccionar el archivo local (en el _cliente_) para que sea transferido al servidor. Luego, en la parte del programa que lee el archivo debes crear un archivo temporal para copiar la imagen en tr?nsito desde el browser, de forma que luego puedas operar con ella en el serviro para hacer lo que quieras hacer con ella; para eso puedes tener algo como use POSIX; my $n = tmpnam() . ".jpg"; $f = $q->param('thefile'); open C, ">$n"; binmode C; my $b; print C $b while (read($f,$b,1024)); close C; con lo que $n ser? el nombre de un archivo en el servidor que contiene la "imagen" que te subieron a trav?s de la p?gina Web; de hecho, es un nombre temporal que se _garantiza_ ?nico (gracias a POSIX). Es condici?n sine qua non que la forma sea del tipo MultiPart para poder recibir uno o m?s archivos desde el browser. Cuando leas enteramente la p?gina de manual CGI no solamente comprender?s los fragmentos de c?digo que expongo, sino que descubrir?s la forma de hacer una forma multi parte. N?tese que _asum?_ que se trata de una imagen JPEG y por eso concaten? ".jpg" como extensi?n del archivo temporal. En teor?a el "archivo" le?do puede ser cualquier cosa, de manera que un programador competente debe _verificar_ el tipo del archivo que le han enviado, lo cual no es ning?n problema si se usa $q->uploadInfo(...) apropiadamente. -- Ernesto Hern?ndez-Novich - Running Linux 2.4.8 i686 - Unix: Live free or die! -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/E d+(++) s+: a C+++$ UBLAVHIOSC*+++++$ P++++$ L+++$ E--- W+ N++ o K+++ w-- O- M- V- PS+ PE Y+ PGP>++ t+ 5- X+ R* tv+ b++ DI+++$ D++ G++ e++>+++ h r% y+ -----END GEEK CODE BLOCK----- ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From jnatera at net-uno.net Tue Aug 28 10:23:01 2001 From: jnatera at net-uno.net (Juan Jose Natera Abreu) Date: Wed Aug 4 23:59:25 2004 Subject: [Q] como evitar que un demonio muera accidentadamente en Perl Message-ID: <01082811230100.23347@juanjose> Hola gente, Estoy haciendo un demonio que hace un polling a un intervalo de tiempo a una o varias bases de datos, lee registros de la misma tabla, se comunica con uno o varios servidores via TCP y envia ciertos comandos a estos. dependiendo de los resultados del comando enviado, reporta un error en la base de datos o elimina el registro de la tabla. Este proceso ocurre en un ciclo 'infinito'. Me gustaria implementar que el demonio acepte un SIGUSR1 como el de apache, que lo deje terminar de procesar lo que tiene en el momento y luego de releer el archivo de configuracion reinicie, tambien quisiera prevenir que el ciclo quede interrumpido por un shutdown incorrecto del mismo. Como puedo hacer esto? Saludos, Juan Jos? -- fortune generated signature: NOBODY EXPECTS THE SPANISH INQUISITION ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Thu Aug 30 16:20:00 2001 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:25 2004 Subject: menu en perl??? In-Reply-To: <000a01c13159$1222b780$8ff2c4a1@mydomain.net> Message-ID: On Thu, 30 Aug 2001, Sergio Necepurenko wrote: > Buen d?a a todos, Existe alg?n modulo en perl para generar menu, > submenu y grupos de elementos de estos? Adem?s de los m?dulos que sugiri? Juan Jos?, que son para ambiente X, es posible hacer ventanas, botones y men?es en ambiente de c?nsola empleando curses y otros "widget sets" basados en curses. Podr?as probar Curses - curses para Perl. Cmenu - muy similar a la apariencia de 'dialog' Term::Newt - "Widgets" de texto para Perl basados en libnewt. y si vas a trabajar en texto... ser?a interesante que tus campos de texto tuvieran toda la funcionalidad de readline (la librer?a que hace que en bash se pueda editar la l?nea de comando). Term::Readline - Soporte readline para Perl Todos est?n en CPAN y se instalan de la forma habitual. > Debian 2.2r3 apt-get install libcurses-perl libnewt-perl libterm-readline-perl ...m?s rapido que perl -MCPAN -e shell y muuucho m?s r?pido que andar ubicando RPMs (si es que existen), bajarlos e instalarlos ;-) -- Ernesto Hern?ndez-Novich - Running Linux 2.4.8 i686 - Unix: Live free or die! -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/E d+(++) s+: a C+++$ UBLAVHIOSC*+++++$ P++++$ L+++$ E--- W+ N++ o K+++ w-- O- M- V- PS+ PE Y+ PGP>++ t+ 5- X+ R* tv+ b++ DI+++$ D++ G++ e++>+++ h r% y+ -----END GEEK CODE BLOCK----- ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From lnieves at cida.ve Thu Aug 30 17:50:21 2001 From: lnieves at cida.ve (Larry Alexander Nieves) Date: Wed Aug 4 23:59:25 2004 Subject: CGI-script con frames In-Reply-To: <3B8EBCEE.185DCA45@cantv.net> Message-ID: On Thu, 30 Aug 2001, hans wrote: >Para evitar la recarga de toda la pagina, cuando se cambia solo >el contenido de una lista o un .jpg, quiero modificar la aplicacion >de tal manera de que tenga dos frames, uno para la navegacion, otro >para las respuestas. > >Pero me quede atascado en el intento de producir un script cgi que >hace eso. > En: http://stein.cshl.org/WWW/software/CGI/examples/ hay varios ejemplos de cgis escritos en Perl, entre los cuales hay uno que lidia con _marcos_ Por supuesto que usa el m?dulo CGI. -- Larry Alexander Nieves Colmen?rez lnieves@cida.ve ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------