From emhn at telcel.net.ve Fri Jul 14 07:13:42 2000 From: emhn at telcel.net.ve (Ernesto Hernández-Novich) Date: Wed Aug 4 23:59:17 2004 Subject: [INFO] Oferta de trabajo Message-ID: <00071408182701.30060@freakazoid> Seguros/Banco Nuevo Mundo está en la búsqueda de programadores Perl con experiencia en el módulo CGI y preferiblemente con habilidad de uso en el módulo DBI. Si además tiene conocimientos de SQL y ha trabajado con bases de datos relacionales Oracle o PostgreSQL, mucho mejor. La plataforma de desarrollo es Linux. Los aspirantes pueden trabajar por contrato fijo o por proyecto, según las habilidades y disponibilidad de tiempo; el objetivo del trabajo es la construcción de reportes de base de datos a través de páginas Web para sustituir un sistema de información tradicional cliente-servidor. Si estás interesado, o sabes de alguien que pueda estarlo, envía tu resumen curricular en texto o HTML (otros formatos serán simplemente ignorados) a programador_perl@nuevomundo.com.ve. -- Ernesto Hernández-Novich - Running Linux 2.2.14 - 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 Sun Jul 16 18:12:48 2000 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:17 2004 Subject: Exploraciones interesantes Message-ID: <00071619142200.00459@asterix> Gracias a USENIX, en el siguiente URL se pueden encontrar algunas exploraciones interesantes en Perl, tanto para novatos como mongers experimentados. Estas fueron columnas de la revista ;login: http://www.usenix.org/publications/perl/perlindex.html -- Ernesto Hernández-Novich - Running Linux 2.2.16 i686 - Unix: Live free or die! One thing is to be the best, and another is to be the most popular. -----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 koshrf at cantv.net Tue Jul 18 18:40:18 2000 From: koshrf at cantv.net (Ricardo C. Fernandez de C.) Date: Wed Aug 4 23:59:17 2004 Subject: Exploraciones interesantes In-Reply-To: <00071619142200.00459@asterix> Message-ID: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> Hablando de exploraciones... cuando te vas a explorar en la tan esperada charla que le prometistes a la gente de VELUG??? todavIa la estoy esperando =o) At 07:12 PM 16/07/00 -0400, you wrote: >Gracias a USENIX, en el siguiente URL se pueden encontrar algunas exploraciones >interesantes en Perl, tanto para novatos como mongers experimentados. Estas >fueron columnas de la revista ;login: > >http://www.usenix.org/publications/perl/perlindex.html >-- >Ernesto Hern?ndez-Novich - Running Linux 2.2.16 i686 - Unix: Live free or die! >One thing is to be the best, and another is to be the most popular. >-----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. >------------------------------------------------------------------------ > ********************************** * I?m always been here... * * KOSH Naranek - Babylon 5 * ********************************** Ricardo C. Fern?ndez de C. SuSE de Venezuela Vocal de VELUG http://www.imperios.com/fercusoft ------------------------------------------------------------------------ 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 tony at tony.tzo.com Wed Jul 19 11:44:21 2000 From: tony at tony.tzo.com (Tony Rodriguez) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] tie() y untie() de un novato In-Reply-To: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> References: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> Message-ID: <00071912595105.00626@ns> Saludos a todos los miembros de la lista. Ernesto: Apunte tu consejo de usar WEB en vez de TK. Lo tomare en cuenta. Sin embargo, el programa realizara cosas como facturacion y control de Inventario para lo cual creo que quiza una interfaz TK me sea mas comoda y efectiva. Decidire cuando llegue el momento. ;-) Numero dos: Quisiera comentar a los listeros que soy bastante novato pero voy con todo. Lo que yo hago para aprender lenguajes de programacion es implementar un gran programa ( totalmente inutil ;-) donde uso todos los conceptos que me sean posible. Nada como echar codigo para aprender. Ahora tengo un par de pregunticas... Ya he usado objetos (referencias a clases), clases, etc y aunque se como usar el tie y como implementarlo para ligar variables a objetos, realmente no entiendo la utilidad del mismo. Quisiera que por favor que solo me dieran un ejemplo para captar la idea. Gracias de antemano. Ultimo puntico. Como hago para sacar un caracter de la tabla ASCII con numeros decimales? Se lo siguiente: print "\101\n" = print "\x41\n" octal y hexadecimal y ambos imprimen el caracter " A " . Pero como lo hago con numeros decimales? tengo oct() y hex() los cuales son las funciones que convierten los numeros octales y hexadecimales a decimales. Cuales son las funciones que hacen lo contrario ( de dec -> hex u oct )? Como nota curiosa note que si los argumentos son en hexadecimal, primero este numero se convierte a decimal y luego es tomado como si fuera octal o hexa dependiendo de la funcion y convertido a decimal nuevamente. Saludos y gracias por su atencion. Tony. ------------------------------------------------------------------------ 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 vdaniel at trompo.com Wed Jul 19 06:33:30 2000 From: vdaniel at trompo.com (Daniel van Balen) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] tie() y untie() de un novato In-Reply-To: <00071912595105.00626@ns>; from tony@tony.tzo.com on Wed, Jul 19, 2000 at 12:44:21PM -0400 References: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> <00071912595105.00626@ns> Message-ID: <20000719153330.S2882@vdaniel> On Wed, Jul 19, 2000 at 12:44:21PM -0400, Tony Rodriguez wrote: > Ya he usado objetos (referencias a clases), clases, etc y aunque se como > usar el tie y como implementarlo para ligar variables a objetos, realmente no > entiendo la utilidad del mismo. Quisiera que por favor que solo me dieran un > ejemplo para captar la idea. Gracias de antemano. > Un ejemplo que creo que es bastante com?n seria ponerle una capa de abstracci?n a una base de datos. De esta forma leer o escribir a una variable en el fondo es equivalente a hacerle queris a una base de datos pero solo tienes que preocuparte del query una vez y dentro del programa es m?s intuitivo usar una variable que funciones para accesar el dato. Tambi?n te permiten por ejemplo revisar que los datos que tratas de guardar en una variable son v?lidos (aunque esto es overkill), puedes implementar acceso a un archivo a travez de una variable, crear arrglos asociativos que puedes accesar por key o por valor o que sean "case insensitive etc. > Ultimo puntico. Como hago para sacar un caracter de la tabla ASCII con numeros > decimales? Se lo siguiente: > print "\101\n" = print "\x41\n" octal y hexadecimal y ambos imprimen el > caracter " A " . Pero como lo hago con numeros decimales? > > tengo oct() y hex() los cuales son las funciones que convierten los numeros > octales y hexadecimales a decimales. Cuales son las funciones que hacen lo > contrario ( de dec -> hex u oct )? Utiliza sprintf() o printf con formato %o para octal y %x para hexadecimal. -spiff ------------------------------------------------------------------------ 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 Wed Jul 19 15:28:26 2000 From: emhn at telcel.net.ve (Ernesto Hernández-Novich) Date: Wed Aug 4 23:59:17 2004 Subject: ASCII <-> Numérico In-Reply-To: <20000719153330.S2882@vdaniel> References: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> <00071912595105.00626@ns> <20000719153330.S2882@vdaniel> Message-ID: <00071916450505.25523@freakazoid> On Wed, 19 Jul 2000, you wrote: > > Ultimo puntico. Como hago para sacar un caracter de la tabla ASCII con numeros > > decimales? Se lo siguiente: > > print "\101\n" = print "\x41\n" octal y hexadecimal y ambos imprimen el > > caracter " A " . Pero como lo hago con numeros decimales? > > > > tengo oct() y hex() los cuales son las funciones que convierten los numeros > > octales y hexadecimales a decimales. Cuales son las funciones que hacen lo > > contrario ( de dec -> hex u oct )? > > Utiliza sprintf() o printf con formato %o para octal y %x para > hexadecimal. Para convertir de ASCII a decimal y viceversa, utiliza las funciones $num = ord($char); $char = chr($num); Así, #!/usr/bin/perl $num = ord("a"); print "$num\n"; $char = chr(97); print "$char\n"; Imprime "97" y "a", como es de esperarse. ord() y chr() son más rápidas que sprintf() Si tienes _muchos_ caracteres para convertir, utilizar un for/foreach con ord()/chr() es una solución, pero muy ingenua. Las funciones pack()/unpack() son muy poderosas en ese sentido, así: #!/usr/bin/perl # El $, es el separador al momento de imprimir, obviamente pongo " " para no # tener que imprimir los elementos de la lista uno por uno. El $\ es el # separador de líneas, obviamente pongo "\n" para no tener que ponerlo al final # de cada print. Soy muy flojo y por eso uso eso, pero tuve que poner los # comentarios para que se entienda :-) man perlvar $, = " "; $\ = "\n"; @ascii = unpack("C*", "Just another Perl hacker!"); print @ascii; $string = pack("C*", @ascii); print $string; Imprime (en un terminal de 132 columnas :-) 74 117 115 116 32 97 110 111 116 104 101 114 32 80 101 114 108 32 104 97 99 107 101 114 33 Just another Perl hacker! -- Ernesto Hernández-Novich - Running Linux 2.2.14 - 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 tony at tony.tzo.com Wed Jul 19 17:20:29 2000 From: tony at tony.tzo.com (Tony Rodriguez) Date: Wed Aug 4 23:59:17 2004 Subject: ASCII <-> Numérico In-Reply-To: <00071916450505.25523@freakazoid> References: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> <20000719153330.S2882@vdaniel> <00071916450505.25523@freakazoid> Message-ID: <00071918372502.01240@ns> Gracias Daniel y Ernesto por sus respuestas. Quede claro! Fueron de gran ayuda. Me averguenzo de no haberme imaginado lo del ord() y chr(). Lo que pasa es que como \### en octal y \x## en hexa sacaba los caracteres, esperaba algo semejante en decimal. Otra preguntica... tengo una tabla HASH y quiero saber si ciertos elementos se encuentran dentro de la tabla. Queria usar =~. Ahora, lo que se me ocurrio fue formar una sola cadena con los datos del HASH para luego hacer la busqueda, algo como: .. ... %colores=Term::ANSIColor::attributes; $cad=""; while (($nombre,$atributo)=each(%colores)) { #Voy a crear una cadena con este HASH $cad=$cad." ".$nombre; } .. y mas adelante algo como: .. .. foreach (@palabras) { # @palabras es un array de palabras que quiero saber si se encuentran # dentro del HASH $min = lc($_); if ( $cad =~ $min ) {$es_o_no="SI";} else {$es_o_no="NO";} } Luego, la pregunta seria.. Puedo hacerlo directamente con el HASH? Gracias por todo. Tony. > Para convertir de ASCII a decimal y viceversa, utiliza las funciones > > $num = ord($char); > $char = chr($num); > > Así, > > #!/usr/bin/perl > $num = ord("a"); print "$num\n"; > $char = chr(97); print "$char\n"; > > Imprime "97" y "a", como es de esperarse. > > ord() y chr() son más rápidas que sprintf() > > Si tienes _muchos_ caracteres para convertir, utilizar un for/foreach con > ord()/chr() es una solución, pero muy ingenua. Las funciones pack()/unpack() > son muy poderosas en ese sentido, así: > > #!/usr/bin/perl > # El $, es el separador al momento de imprimir, obviamente pongo " " para no > # tener que imprimir los elementos de la lista uno por uno. El $\ es el > # separador de líneas, obviamente pongo "\n" para no tener que ponerlo al final > # de cada print. Soy muy flojo y por eso uso eso, pero tuve que poner los > # comentarios para que se entienda :-) man perlvar > > $, = " "; > $\ = "\n"; > @ascii = unpack("C*", "Just another Perl hacker!"); > print @ascii; > $string = pack("C*", @ascii); > print $string; > > Imprime (en un terminal de 132 columnas :-) > > 74 117 115 116 32 97 110 111 116 104 101 114 32 80 101 114 108 32 104 97 99 107 101 114 33 > Just another Perl hacker! > -- > Ernesto Hernández-Novich - Running Linux 2.2.14 - 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. > ------------------------------------------------------------------------ ------------------------------------------------------------------------ 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 vdaniel at trompo.com Wed Jul 19 09:59:59 2000 From: vdaniel at trompo.com (Daniel van Balen) Date: Wed Aug 4 23:59:17 2004 Subject: =?iso-8859-1?Q?ASCII_=3C-=3E_Num=E9rico?= In-Reply-To: <00071918372502.01240@ns>; from tony@tony.tzo.com on Wed, Jul 19, 2000 at 06:20:29PM -0400 References: <3.0.3.32.20000718194018.00874b20@pop.cantv.net> <20000719153330.S2882@vdaniel> <00071916450505.25523@freakazoid> <00071918372502.01240@ns> Message-ID: <20000719185959.U2882@vdaniel> On Wed, Jul 19, 2000 at 06:20:29PM -0400, Tony Rodriguez wrote: > Otra preguntica... tengo una tabla HASH y quiero saber si ciertos elementos se > encuentran dentro de la tabla. Queria usar =~. Ahora, lo que se me ocurrio > fue formar una sola cadena con los datos del HASH para luego hacer la busqueda, > algo como: > > .. > ... > %colores=Term::ANSIColor::attributes; > $cad=""; > while (($nombre,$atributo)=each(%colores)) > { > #Voy a crear una cadena con este HASH > $cad=$cad." ".$nombre; > } > .. > y mas adelante algo como: > .. > .. > foreach (@palabras) { > # @palabras es un array de palabras que quiero saber si se encuentran > # dentro del HASH > $min = lc($_); > if ( $cad =~ $min ) {$es_o_no="SI";} else {$es_o_no="NO";} > } > > Luego, la pregunta seria.. Puedo hacerlo directamente con el HASH? > Sip si quieres saber si %colores tiene el color azul como "key" haces "exists($colores{azul})" devolviendote verdadero o falso. Si quieres saber si $colores{azul} esta definido, o sea $colores{azul} != undef usa "defined($colores{azul})". En tu caso (por lo que veo por tu codigo) quieres usar exists(). -spiff ------------------------------------------------------------------------ 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 Wed Jul 26 13:21:17 2000 From: emhn at telcel.net.ve (Ernesto Hernández-Novich) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] regular expressions In-Reply-To: <397F01C3.3EDFDB1F@cantv.net> References: <397F01C3.3EDFDB1F@cantv.net> Message-ID: <00072614523901.15880@freakazoid> On Wed, 26 Jul 2000, you wrote: > El siguiente script hace, lo que pretendo hacer: me quita los palitos > despues del palito nro. 10. > > 024|09|27.8347|-070|28.3004|Sun|Dec|31|00:00:00|1989|07-FEB-00|12:33 > 025|10|05.4527|-069|41.9270|Sun|Dec|31|00:00:00|1989|07-FEB-00|15:43 > NEW-1|10|19.6010|-066|49.6690||Jan|03|00:00:00|2000|BOTEQUIN > NEW-10|10|19.3510|-066|50.5760||Jan|03|00:00:00|2000|TANQUE|DE|AGUA > > $count = 0; > s{(\|)}{ > ++$count > 10 # linea 25 > ? "$1{1} " > : $1 > }gex; > > Cada vez que se substituye un palito por un espacio sale: > > Use of uninitialized value at gd22w_t.pl line 25, chunk 38. > Acaso la line 23 no tiene efecto? > El chunk x aparentemente tiene que ver con el nro. de la linea de > archivo > con el qual esta trabajando. La línea 23 tiene efecto, pero el error no es en relación a $count sino a lo que tienes como resultado del ?: que está indefinido. El error se debe al $1{1}. $1{1} es pedir el elemento con clave '1' del hash %1 el cual, por supuesto, no existe y por tanto no pone nada. Este "nada" se concatena con espacio en blanco y el programa "funciona" pero tiene un bug oscuro :-). Dicho bug, corregido, quedaría como s/(\|)/(++$count > 10) ? " " : $1/gex; y funciona bien. Sin embargo, hay una solución más práctica, clara, y sobre todo _rápida_; la solución se basa en lo siguiente: # Quito el \n chomp; # Rompo (split) por "|" esto genera una _lista_ con todos los campos. # @diez[0..9] genera una _lista_ de 10 elementos y # @resto es una _lista_ sin tamaño definido, entonces (@diez[0..9],@resto) = split /\|/; # Consecuencia: las primeras diez columnas quedan en $diez[0] hasta $diez[9] y # @resto se traga todas las columnas que quedan. # # join(" ",@resto) une las columnas más allá de la diez con " " en un escalar # y entonces join("|",@diez[0..9],join(" ",@resto)); # Consecuencia: las primeras diez columnas quedan unidas con "|" y el resto, # que ya estaba unido con " " se pone al final. Esta segunda solución es casi el doble de rápida que con expresiones regulares. Puedes compararlas usando el módulo Benchmark de Perl, con el ejemplo a continuación: #!/usr/bin/perl -w # datos es un archivo con los datos de prueba use Benchmark; timethese(10000, { 'withjoin' => sub { open(D,"datos"); while () { chomp; (@diez[0..9],@resto) = split /\|/; join("|",@diez[0..9],join(" ",@resto)); } close(D); }, 'withregexp' => sub { open(D,"datos"); while () { $count = 0; s/(\|)/(++$count > 10) ? " " : $1/gex; } close(D); } } ); Al ejecutarlo tienes una salida como Benchmark: timing 10000 iterations of withjoin, withregexp... withjoin: 9 wallclock secs ( 3.80 usr + 0.42 sys = 4.22 CPU) withregexp: 16 wallclock secs ( 7.90 usr + 0.45 sys = 8.35 CPU) Tu solución, aunque válida, está planteada desde el paradigma de programación imperativa (o procedural), el cual tiene limitaciones de expresividad para operaciones de aplicación iterativa de funciones (precisamente lo que tu quieres hacer). Mi solución está planteada desde el paradigma de programación funcional, el cual descansa sobre la composición de funciones con iteración implícita (como split y join). Perl provee ambos paradigmas, todo el secreto está en aprovechar el más adecuado para cada problema... P.S. Muchos problemas como este se resuelven más rápido y mejor pensando en Lisp o ML, en lugar de pensar en C, Modula o (yeech!) Basic. There's more than one way to do it! -- Ernesto Hernández-Novich - Running Linux 2.2.16 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 tony at tony.tzo.com Wed Jul 26 16:41:45 2000 From: tony at tony.tzo.com (Tony Rodriguez) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] Acerca de bind Message-ID: <00072617525800.11775@ns> Saludos compañeros listeros. Ante todo muchas gracias por sus anteriores respuestas. Lo que mas me gusta es que siempre vienen con una ñapa de conocimiento para mi, gracias al uso de otros conceptos ;-) Bueno, sigo haciendo mi programa para poner en practica y fortalecer las bases de la programacion en Perl. En este momento estoy en la parte de P/Tk y me encontre con un problemilla. Estoy tratando de asociar una tecla a un evento ... en particular tengo un TK::Entry donde al presionar un TK:Button puedo colocar la entrada en una variable e imprimirla pero quiero colocarla tambien cuando presiono Enter. Lo cierto es que he estado leyendo y creo que debo hacerlo con el $widget->bind. El problema es que no encuentro hacer que funcione. Dado que no lograba nada, trate de ejecutar un ejemplo que consegui ( Ver ABAJO ) pero con el mismo tampoco logro hacer que me reconozca las teclas presionadas. Sencillamente el programa me muestra la ventana y no hace nada. Punto. Podrian ustedes sugerirme algo o hacerme ver el porque de esto?. Gracias Mil de antemano. Tony. ##################################3 #!/usr/bin/perl -w # use Tk; $vp = MainWindow->new; $marco = $vp->Frame(-height => '6c', -width => '6c', -background => 'black'); $marco->pack; $vp->bind('Any-KeyPress' => \&echo); $vp->bind('ButtonPress' => \&echoPress); $vp->bind('ButtonRelease' => \&echoRel); MainLoop; sub echoRel { print "Boton Liberado\n"; my ($btnc) = @_; my $e = $btnc->XEvent; my ($x,$y)=($e->x,$e->y,$e->K,$e->W,$e->A); # SE QUE HAY DE MAS PERO FUE PARA # Aprovechar la misma rutina para los tres casos ;-). Yo tambien soy # un poco flojo ;-) print " X cord = $x\n"; print " Y cord = $y\n"; } sub echoPress { print "Boton Presionado\n"; my ($btnc) = @_; my $e = $btnc->XEvent; my ($x,$y)=($e->x,$e->y,$e->K,$e->W,$e->A); print " X cord = $x\n"; print " Y cord = $y\n"; } sub echo { print "Oprimir Cualquier Boton\n"; my ($btnc) = @_; my $e = $btnc->XEvent; my ($x,$y,$W,$K,$A)=($e->x,$e->y,$e->K,$e->W,$e->A); print " X cord = $x\n"; print " Y cord = $y\n"; print " KeyCode = $W\n"; print " ASCII = $A\n"; print " Window = $K\n"; } ------------------------------------------------------------------------ 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 tony at tony.tzo.com Fri Jul 28 12:53:24 2000 From: tony at tony.tzo.com (Tony Rodriguez) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] Asociar teclas Message-ID: <00072813543101.08057@ns> Saludos. Voy a reformular la pregunta: Alguien sabe como puedo asociar una tecla a un widget en perl/tk? Gracias de antemano. Tony. ------------------------------------------------------------------------ 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 vdaniel at trompo.com Fri Jul 28 05:22:51 2000 From: vdaniel at trompo.com (Daniel van Balen) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] Asociar teclas In-Reply-To: <00072813543101.08057@ns>; from tony@tony.tzo.com on Fri, Jul 28, 2000 at 01:53:24PM -0400 References: <00072813543101.08057@ns> Message-ID: <20000728142251.I9057@vdaniel> On Fri, Jul 28, 2000 at 01:53:24PM -0400, Tony Rodriguez wrote: > Saludos. > > Voy a reformular la pregunta: > > Alguien sabe como puedo asociar una tecla a un widget en perl/tk? > sorry man, no te estamos ignorando (aunque estoy seguro que parece) el detalle es que yo por lo menos nunca he usado perl/Tk y el "perl -MCPAN -e 'install Bundle::Tk' me esta dando problemas y no he tenido tiempo de instalarlo. -spiff ------------------------------------------------------------------------ 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 tony at tony.tzo.com Fri Jul 28 14:25:47 2000 From: tony at tony.tzo.com (Tony Rodriguez) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] Asociar teclas In-Reply-To: <20000728142251.I9057@vdaniel> References: <00072813543101.08057@ns> <20000728142251.I9057@vdaniel> Message-ID: <00072815312200.09105@ns> Muchas Gracias de todas formas... pero casualmente me conecte a ver mails porque queria comentar que habia conseguido la respuesta. En efecto si es con el $widget->bind pero mi problema era que: yo tenia: $vp->bind('Any-KeyPress' => \&echo); y el compilador lo daba todo por bueno. Cero errores - cero warnings. Y lo que debo hacer es: $vp->bind('' => \&echo); Por supuesto como ya es costumbre para mi, habia obviado los signos < y > pensando que lo usaban como regularmente lo usan... para encerrar la expresion. Que locura, pensar que estube con esto practicamente dos dias. Lo que si es seguro es que no lo olvidare nunca ;-) Tambien lei muchas cosas gracias a esto ya que pensando que era ... que se yo!.. mi servidor X, me lei cosas como XEvent, xlib y otras cosas referentes al tema... haha, mas ñapa ;-) Saludos y Muchas Gracias de nuevo. Tony El dia vie, 28 jul 2000, escribiste: > On Fri, Jul 28, 2000 at 01:53:24PM -0400, Tony Rodriguez wrote: > > Saludos. > > > > Voy a reformular la pregunta: > > > > Alguien sabe como puedo asociar una tecla a un widget en perl/tk? > > > > sorry man, no te estamos ignorando (aunque estoy seguro que parece) > el detalle es que yo por lo menos nunca he usado perl/Tk y el "perl -MCPAN -e > 'install Bundle::Tk' me esta dando problemas y no he tenido tiempo de > instalarlo. > > -spiff > ------------------------------------------------------------------------ > Enviar e-mail a colocando en el cuerpo: > "UNSUBSCRIBE caracas-pm-list" para desuscribirse. > "INFO caracas-pm-list" para conocer las reglas de etiqueta. > ------------------------------------------------------------------------ ------------------------------------------------------------------------ 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 tony at tony.tzo.com Fri Jul 28 15:56:45 2000 From: tony at tony.tzo.com (Tony Rodriguez) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] $_ $[ y ... ? Message-ID: <00072817052001.09603@ns> Salu2 En lo siguiente: $\="\n"; foreach (@arreglo) { print "$[ -> $_"; } tenemos que se imprimiran tantas lineas como elementos tenga el array y en cada linea se imprimira 0 ( "cero" que es el primer indice del array ) y, seguido de ->, el elemento del array que corresponda. Pues bien, la pregunta es: Existe una variable especial en perl que me indique el indice del elemento del array que esta siendo accesado? Gracias de Antemano. Tony. ------------------------------------------------------------------------ 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 Jul 28 20:14:51 2000 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:17 2004 Subject: [Q] $_ $[ y ... ? In-Reply-To: <00072817052001.09603@ns> References: <00072817052001.09603@ns> Message-ID: <00072821335603.24261@asterix> On Fri, 28 Jul 2000, Tony Rodriguez wrote: >Salu2 > >En lo siguiente: > >$\="\n"; >foreach (@arreglo) { > print "$[ -> $_"; >} > >tenemos que se imprimiran tantas lineas como elementos tenga el array y en cada >linea se imprimira 0 ( "cero" que es el primer indice del array ) y, seguido de >->, el elemento del array que corresponda. Pues bien, la pregunta es: Tienes un malentendido con el $[ porque no significa el primer índice _del_ arreglo sino de _todos_ los arreglos en el alcance. No está en modo alguno ligado con ningún arreglo particular, es simplemente una forma de modificar la semántica de los arreglos para que comiencen en 0, 1, 42 o cualquier número que resulte conveniente al programador. >Existe una variable especial en perl que me indique el indice del elemento del >array que esta siendo accesado? ¿Cómo podrías determinar primero que un arreglo está siendo accesado y segundo que hay un iterador aplicado a él? Con un contador. ¿Qué sentido tiene implementar _permanentemente_ un contador en _todos_ los bucles que involucren un arreglo, si en la _mayoría_ de los casos nadie lo va a usar? Ninguno, porque pecharías la eficiencia notablemente a cambio de muy poca conveniencia. ¿Cómo manejas el caso en el cuál se manipulan _varios_ arreglos en una iteración? foreach (@a,@b,@c,@d,@e) { ... } ¿Qué semántica tendría el contador? ¿Para la lista concatenada o para cada lista? Y ante cualquiera de ambas respuestas, ¿por qué? (Por supuesto, se trata de una pregunta en la cual ambas respuestas son correctas pero incorrectas en la práctica de implementación del lenguaje). Finalmente, ¿y si la lista es modificada durante el iterador para estirarse/encogerse/reordenarse, qué semántica le vas a dar al contador implícito? Son preguntas que no tienen respuesta trivial y que son dejadas como preocupación para el que programa en Perl y no para el que programa a Perl :-). La variable que buscas no existe implícita, tienes que expresarla explícitamente como un contador. En todo caso, sería interesante que nos comentaras un caso práctico en el cual dicha variable (si existiese) resultaría _realmente_ útil. -- Ernesto Hernández-Novich - Running Linux 2.2.16 i686 - Unix: Live free or die! One thing is to be the best, and another is to be the most popular. -----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 Jul 14 07:13:42 2000 From: emhn at telcel.net.ve (Ernesto Hernández-Novich) Date: Wed Aug 4 23:59:18 2004 Subject: [INFO] Oferta de trabajo Message-ID: <00071408182701.30060@freakazoid> Seguros/Banco Nuevo Mundo está en la búsqueda de programadores Perl con experiencia en el módulo CGI y preferiblemente con habilidad de uso en el módulo DBI. Si además tiene conocimientos de SQL y ha trabajado con bases de datos relacionales Oracle o PostgreSQL, mucho mejor. La plataforma de desarrollo es Linux. Los aspirantes pueden trabajar por contrato fijo o por proyecto, según las habilidades y disponibilidad de tiempo; el objetivo del trabajo es la construcción de reportes de base de datos a través de páginas Web para sustituir un sistema de información tradicional cliente-servidor. Si estás interesado, o sabes de alguien que pueda estarlo, envía tu resumen curricular en texto o HTML (otros formatos serán simplemente ignorados) a programador_perl@nuevomundo.com.ve. -- Ernesto Hernández-Novich - Running Linux 2.2.14 - 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. ------------------------------------------------------------------------ ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------