From rrodolfos at gmail.com Wed Jan 6 17:50:58 2010 From: rrodolfos at gmail.com (RrodolfoS .) Date: Wed, 6 Jan 2010 21:20:58 -0430 Subject: [caracas-pm] [P] Catalyst y Form Frameworks Message-ID: <6f5a8ec91001061750g977cd97i98d7c0448572ce9b@mail.gmail.com> Saludos a todos, Gracias por la informaci?n del pragma attributes, fue lo suficientemente claro para tener una idea general. Leyendo y realizando el tutorial de catalyst, y relacionado con el CRUD, llego el momento de utilizar un form framework, y hay varias opciones, en alg?n momento oi o lei a Ernesto mencionando que Form::Builder es lo m?ximo (quizas hace mucho), adem?s en el tutorial mencionan Formfu y Html::FormHandler, por el cual me decid?, unas de las razones es que no hay que utilizar los archivos en yml, y otra fue que en alg?n lugar de la documentaci?n de catalyst o de su p?gina web lei que Form::Builder ya no es una opci?n, solo me queda Html::FormHandler. La pregunta de las ochenta mil lochas, cual form framework es el mejor, o el mas recomendado para catalyst y para CRUD?? RrodolfoS From csanchez at unplug.org.ve Wed Jan 6 19:41:00 2010 From: csanchez at unplug.org.ve (=?ISO-8859-1?Q?Christian_S=E1nchez?=) Date: Wed, 6 Jan 2010 23:11:00 -0430 Subject: [caracas-pm] [P] Catalyst y Form Frameworks In-Reply-To: <6f5a8ec91001061750g977cd97i98d7c0448572ce9b@mail.gmail.com> References: <6f5a8ec91001061750g977cd97i98d7c0448572ce9b@mail.gmail.com> Message-ID: <3b513b971001061941j4aba9d14hf075006c4ccff9e7@mail.gmail.com> El 6 de enero de 2010 21:20, RrodolfoS . escribi?: > Saludos a todos, > > > Leyendo y realizando el tutorial de catalyst, y relacionado con el > CRUD, llego el momento de utilizar un form framework, y hay varias > opciones, en alg?n momento oi o lei a Ernesto mencionando que > Form::Builder es lo m?ximo (quizas hace mucho), adem?s en el tutorial > mencionan Formfu y Html::FormHandler, por el cual me decid?, unas de > las razones es que no hay que utilizar los archivos en yml, y otra fue > que en alg?n lugar de la documentaci?n de catalyst o de su p?gina web > lei que Form::Builder ya no es una opci?n, solo me queda > Html::FormHandler. > > La pregunta de las ochenta mil lochas, cual form framework es el > mejor, o el mas recomendado para catalyst y para CRUD?? > > FormBuilder no es recomendado por que ya est? "obsoleto", aunque sigue siendo muy bueno y funciona bastante bien, todav?a se puede usar en Catalyst sin problemas. FormFu se estuvo usando como el sustituto natural de FormBuilder, introdujo nuevas funciones y facilit? bastante el uso de formularios, FormHandler es bastante nuevo y quiz?s lo m?s interesante es la base que tiene en Moose y que puedes crear los formularios desde el mismo script sin usar yaml, etc... En realidad yo he seguido usando FormBuilder por que ya lo conozco y funciona bien, voy a probar FormHandler por que me llama bastante la atenci?n, creo que cualquiera de estos m?dulos puede ayudarte a hacer menos tediosa la tarea de hacer formularios, ya depender?a de con cual de ellos eres m?s productivo al escribir la aplicaci?n. Saludos. -- Christian S?nchez Usuario GNU/Linux 234800 Maracay - Venezuela http://g013m.com.ve -------------- next part -------------- An HTML attachment was scrubbed... URL: From rrodolfos at gmail.com Sun Jan 10 17:28:39 2010 From: rrodolfos at gmail.com (RrodolfoS .) Date: Sun, 10 Jan 2010 20:58:39 -0430 Subject: [caracas-pm] =?iso-8859-1?q?=5BP=5D_Catalyst_y_Selects_/anidados?= =?iso-8859-1?q?=7Ccascada=7Cdependientes/=2C_para_direcciones_=28P?= =?iso-8859-1?q?a=EDs=2C_Estado=2C_Parroquia=29?= Message-ID: <6f5a8ec91001101728u74b406dbh88cb73ff475e3179@mail.gmail.com> Saludos, He estado revisando html::formhandler, hice un ejercicio de CRUD con una ?nica tabla, pude crear un formulario no asociado con la base de datos y otro que asociado con la base de datos luego de validar los datos (muy comodo no preocuparse por eso), inserta o actuliza los datos seg?n sea el contexto, todo muy bien, pero, siempre el pero, que pasa si necesito un select /anidado|dependiente|cascada/ con otro select, es decir tipo las direcciones, seleccionas el pa?s en un select y el select con los estados se llena con los datos relacionados (estados de ese pa?s), y si tienes otro de parroquias al seleccionar el estado realiza la misma m?gia. En otros lenguaje haciendo todo a mano y quizas no de la mejor manera se obten?a el resultado, pero de verdad que con catalyst me encuentro un poco desorientado, que sugerencias tienen, ya que regularmente estos forms framework hacen todo automatico y no quiero romper con su metodolog?a. RrodolfoS From emhnemhn at gmail.com Sun Jan 10 18:19:13 2010 From: emhnemhn at gmail.com (Ernesto =?ISO-8859-1?Q?Hern=E1ndez-Novich?=) Date: Sun, 10 Jan 2010 21:49:13 -0430 Subject: [caracas-pm] [P] Sobre pragma attributes, su funcionamiento y utilidad In-Reply-To: <6f5a8ec90912180801k69a67a52i80c06b56f99573a3@mail.gmail.com> References: <6f5a8ec90912180801k69a67a52i80c06b56f99573a3@mail.gmail.com> Message-ID: <1263176354.3886.95.camel@deepthought.itverx.com.ve> Originalmente envi? esta respuesta el 2009-12-27, pero aparentemente no lleg? a pesar de que mis bit?coras confirman que el mensaje lleg? hasta pm.org On Sat, 2009-12-19 at 11:31 +0000, RrodolfoS . wrote: > Buenos d?as a todos, > > En lo ?ltimos d?as he estado revisando Catalyst y realizando una pausa > con cada duda que se me presenta al recorrer el tutorial, no logro > entender el funcionamiento de los atributos en la definici?n de las > acciones por cada controlador, espero ser claro, la duda es con > relaci?n al pragma attributes, no encuentro documentaci?n clara al > respecto, como funciona, de que forma se usan esos atributos, seg?n > (http://perldoc.perl.org/attributes.html), le cambia la sem?ntica al > m?todo o a la variable, pero no logro crear un uso pr?ctico, en > definitiva no entiendo el citado pragma, si alguien puede dar un > ejemplo, o remitirme a alguna documentaci?n mas sencilla se lo > agradezco. Originalmente, s?lo hab?a tres tipos de atributos para subrutinas en Perl: method, lvalue y locked. El atributo 'lvalue' permite que una funci?n retorne una direcci?n asignable (l-value) en lugar de un valor (r-value). En una asignaci?n, los elementos de la izquierda (l-values) interesan por su ubicaci?n ("guardar aqu?") mientras que los elementos de la derecha (r-values) interesan por su valor ("guardar esto"). Las subrutinas siempre son r-values a menos que se utilice el atributo lvalue, i.e. use feature qw(say) my @arreglo; sub posicion : lvalue { my $p = shift; $arreglo[ $p ] # Se retorna la ubicaci?n y no el valor. } for (0..10) { posicion( $_ ) = $_; } say $_ foreach (@arreglo); El atributo 'locked' es importante si el programa es multihilo, pues garantiza que uno y s?lo un hilo puede ingresar a la subrutina al mismo tiempo (lo convierte en una "regi?n cr?tica"). Si adem?s tiene el atributo 'method', se establecer? un bloqueo sobre el primer argumento pasado a la funci?n (que usualmente representa el objeto sobre el cual se trabaja y que no quisieras sea accedido concurrentemente). Partiendo de esta idea, se generaliz? el concepto de atributos sobre subrutinas de manera que el programador pueda poner cualquier cantidad de atributos separados por comas. Un atributo es _cualquier_ identificador (letras, d?gitos y gui?n bajo), y puede tener una lista de cosas entre par?ntesis (el compilador verifica que los par?ntesis est?n balanceados). Es importante notar que Perl no realiza actividades de an?lisis sint?ctico ni sem?ntico sobre el atributo, sino que lo toma "tal cual" y lo inyecta en el m?dulo siguiendo una estrategia simple. Supongamos que declaras package Grok; use attributes; ... sub foo : bar(baz,qux), bleh { ... } luego, en _cualquier_ rutina dentro del package Grok puedes ejecutar my @attlist = attributes::get( \&foo ) y tendr?s @attlist = qw( bar(baz,qux) bleh ). Qu? hacer con esa informaci?n es problema del programador, incluyendo el an?lisis de cada elemento de la lista y su posible "aplicaci?n". Para simplificar estas tareas existe el m?dulo Attribute::Handlers, que para el mismo ejemplo artificial se usar?a package Grok; use Attribute::Handlers; no warnings 'redefine'; sub foo : bar(baz,qux), bleh { ... } pero le puedes agregar sub bar : ATTR(CODE) { # Esta funci?n se ejecutar? durante la _compilaci?n_ para # _cada_ funci?n que tenga atributo 'bar'. En este ejemplo, # se ejecutar? cuando se compila 'foo'. my ($package,$sym,$coderef,$codename,$data,$phase,$file,$line) = @_; ... } Al compilar 'foo' en nuestro ejemplo, se invocar?a 'bar' recibiendo: $package = 'Grok' $sym = *foo (el typeglob) $coderef = \&foo (apuntador al c?digo de la rutina) $codename = 'foo' $data = referencia a un arreglo que tiene 'baz' y 'qux' como elementos $phase de la compilaci?n (BEGIN, CHECK, INIT o END). Nombre ($file) y l?nea ($line) del archivo donde est? la rutina. Entonces, todo lo que resta es que el programador de la clase decida qu? hay que hacer, a tiempo de compilaci?n, con la rutina a la cual se le puso alg?n atributo. Entre la cantidad de cosas que se pueden hacer, est? analizar los atributos, _generar_ una nueva funci?n que "envuelva" al coderef de la funci?n original, y reinstalarla en el nombre original (con el mismo estilo de lo que hace Memoize). Por ejemplo, imagina un atributo 'Logger' que debe "hacer que cada vez que se ingrese a la rutina se escriba un mensaje en una bit?cora", entonces dentro del manejador podr?a escribir algo como sub Logger : ATTR(CODE) { my ($package,$sym,$coderef,$codename,$data,$phase,$file,$line) = @_; # Verificaciones y quien sabe qu? otra cosa ... my $newfunc = sub { log_somewhere("Ingresando $codename"); $coderef->( @_ ); # La invocaci?n "original" log_somewhere("Terminando $codename"); } ${$sym}{CODE} = $newfunc; } Muy resumido: construyo una funci?n an?nima que hace el log, invoca a la funci?n original pasando los argumentos que se pasar?an a la funci?n cuando fuese invocada y vuelve a hacer el log. Luego, tomo esa funci?n y la instalo en la tabla de s?mbolos original para que cuando llamen a la funci?n original, en realidad llamen a mi funci?n "envoltorio" de la funci?n original. Catalyst saca provecho de esto de manera similar: cuando le pones atributos a los m?todos de _tu_ clase, a tiempo de compilaci?n son manipuladas por los m?todos provistos por Catalyst para envolverlas en funciones adecuadas. Esas funciones envoltorio est?n parametrizadas de acuerdo a las cosas que permite Catalyst en los atributos. Entonces, los atributos para subrutinas son _cadenas_, que han de ser procesadas a tiempo de _compilaci?n_ por rutinas escritas por el _programador_ con el prop?sito de alterar "algo" en las funciones originales. Otra manera de verlo sub original : alterala(con,estos,par?metros) { ... } quiere decir que al compilar 'original' habr? que invocar a la rutina 'alterala' para que "haga alguna alteraci?n" sobre el c?digo de 'original' usando la lista de par?metros ('con', 'estos', 'par?metros'). ?Cu?l alteraci?n? La que est? implantada en 'alterala' y que puede sacar provecho de toda la flexibilidad de typeglobs, coderefs, clausuras y modificaci?n din?mica de c?digo (como usar B::Deparse y otras hierbas). Si, no es f?cil de entender a la primera. -- Ernesto Hern?ndez-Novich - Linux 2.6.28 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't aptitude it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 From emhnemhn at gmail.com Sun Jan 10 18:21:38 2010 From: emhnemhn at gmail.com (Ernesto =?ISO-8859-1?Q?Hern=E1ndez-Novich?=) Date: Sun, 10 Jan 2010 21:51:38 -0430 Subject: [caracas-pm] Serial port sniffer In-Reply-To: <20091224092019.4c79781c.holzem@cantv.net> References: <20091224092019.4c79781c.holzem@cantv.net> Message-ID: <1263176498.3886.97.camel@deepthought.itverx.com.ve> Envi? esta respuesta el 2009-12-27 pero no aparece en los archivos, a pesar que mis bit?coras confirman que el mensaje fue entregado a pm.org On Thu, 2009-12-24 at 09:20 -0430, hans wrote: > Estoy buscando una forma de visualizar los datos que van entrando y saliendo > atravez de un puerto serial. Supongo que tu escenario es PC A -- ( Puerto Serial ) -- Controlador entonces, si tienes _otro_ PC, puedes hacer PC A -- ( Puerto Serial ) -- PC B -- ( Puerto Serial ) -- Controlador y en el PC B, con Debian Linux, corres 'snooper'. aptitude install snooper > Pero (siempre hay uno) no logre de generar la misma data con un programa perl. > Parece que no es exactamente el formato requerido. ?Puedes mostrar el c?digo y un ejemplo de datos a enviar? -- Ernesto Hern?ndez-Novich - Linux 2.6.28 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't aptitude it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 From josereylistas at gmail.com Sun Jan 10 21:38:11 2010 From: josereylistas at gmail.com (Jose Luis Rey) Date: Tue, 12 Jan 2010 01:08:11 +1930 Subject: [caracas-pm] =?iso-8859-1?q?=5BP=5D_Catalyst_y_Selects_/anidados?= =?iso-8859-1?q?=7Ccascada=7Cdependientes/=2C_para_direcciones_=28P?= =?iso-8859-1?q?a=EDs=2C_Estado=2C_Parroquia=29?= In-Reply-To: <6f5a8ec91001101728u74b406dbh88cb73ff475e3179@mail.gmail.com> References: <6f5a8ec91001101728u74b406dbh88cb73ff475e3179@mail.gmail.com> Message-ID: <709840301001102138l6a5e03c5pa2f238a362794e69@mail.gmail.com> La verdad no he usado HTML::FormHandler, pero si hace algo similar al AutoCRUD de catalyst, lleno de ajax por todas partes, te recomiendo que uses algo menos autom?tico como HTML::FormFu o en todo caso uses ajax con Catalyst::View::JSON. Cosas como AutoCRUD son triviales de usar hasta que quieres hacer algo fuera de su patron de trabajo, ah? mejor te olvidas y buscas algo m?s. Adicionalmente si tienes campos dependientes (en cualquier framework web) tienes que usar ajax o tener formularios separados para hacer CRUD sobre el maestro y sobre el detalle. Saludos Jose Luis Rey -- Si tuviera un bol?var por cada vez que he escrito for(i=0;i References: <6f5a8ec90912180801k69a67a52i80c06b56f99573a3@mail.gmail.com> Message-ID: <709840301001102154t34014d00kef431ff99bf5b745@mail.gmail.com> Si lo que quieres es aprender Catalyst no te enrredes intentando comprender los atributos de Perl, de alguna manera Catalyst los sabe manejar y los utiliza para enriquecer la sintaxis de Perl, logrando un DSL ligero que es lo que tu tienes que aprender a usar. Por ahora usa la abstracci?n que te dan y no te pongas a ver todos los detalles de como funciona eso, porque el equivalente si estuvieras aprendiendo a manejar ser?a aprender como funciona cada pieza de un carro, y eso no es muy sensato. De este modo para t? deber?a ser suficiente con saber que: package MiPaquete; sub elmetodo :Local {} Va a ejecutarse como respuesta al request: http://localhost:3000/mipaquete/elmetodo Como hace Catalyst para lograr eso, tomando los atributos y de los m?todos para crear una tabla de despacho es un proceso complejo como ya te explico Ernesto, pero totalmente in?til para escribir una aplicaci?n web, a menos que quieras modificar al mismo Catalyst. En resumen, si quieres comprender los atributos de Catalyst, lo que necesitas leer probablemente es: http://search.cpan.org/~hkclark/Catalyst-Manual-5.8003/lib/Catalyst/Manual/Intro.pod#Action_types Saludos Jose Luis Rey -- Si tuviera un bol?var por cada vez que he escrito for(i=0;i References: <6f5a8ec90912180801k69a67a52i80c06b56f99573a3@mail.gmail.com> <1263176354.3886.95.camel@deepthought.itverx.com.ve> Message-ID: <6f5a8ec91001110553j2e8e5e54m2c8aced66d78798c@mail.gmail.com> Ernesto, Yo recib? el mensaje de la lista de pm.org el d?a 27 de diciembre de 2009, supongo que a los dem?s tambi?n le lleg? excepto a ti. De hecho me fue muy ?til, gracias. Saludos, Rrodolfo Sauce-Guinand 2010/1/10 Ernesto Hern?ndez-Novich : > Originalmente envi? esta respuesta el 2009-12-27, pero aparentemente no lleg? > a pesar de que mis bit?coras confirman que el mensaje lleg? hasta pm.org > > On Sat, 2009-12-19 at 11:31 +0000, RrodolfoS . wrote: >> Buenos d?as a todos, >> >> En lo ?ltimos d?as he estado revisando Catalyst y realizando una pausa >> con cada duda que se me presenta al recorrer el tutorial, no logro >> entender el funcionamiento de los atributos en la definici?n de las >> acciones por cada controlador, espero ser claro, la duda es con >> relaci?n al pragma attributes, no encuentro documentaci?n clara al >> respecto, como funciona, de que forma se usan esos atributos, seg?n >> (http://perldoc.perl.org/attributes.html), le cambia la sem?ntica al >> m?todo o a la variable, pero no logro crear un uso pr?ctico, en >> definitiva no entiendo el citado pragma, si alguien puede dar un >> ejemplo, o remitirme a alguna documentaci?n mas sencilla se lo >> agradezco. > > Originalmente, s?lo hab?a tres tipos de atributos para subrutinas en > Perl: method, lvalue y locked. > > El atributo 'lvalue' permite que una funci?n retorne una direcci?n > asignable (l-value) en lugar de un valor (r-value). En una asignaci?n, > los elementos de la izquierda (l-values) interesan por su ubicaci?n > ("guardar aqu?") mientras que los elementos de la derecha (r-values) > interesan por su valor ("guardar esto"). Las subrutinas siempre son > r-values a menos que se utilice el atributo lvalue, i.e. > > use feature qw(say) > my @arreglo; > sub posicion : lvalue { > ?my $p = shift; > ?$arreglo[ $p ] ? ? # Se retorna la ubicaci?n y no el valor. > } > for (0..10) { > ?posicion( $_ ) = $_; > } > say $_ foreach (@arreglo); > > El atributo 'locked' es importante si el programa es multihilo, pues > garantiza que uno y s?lo un hilo puede ingresar a la subrutina al mismo > tiempo (lo convierte en una "regi?n cr?tica"). Si adem?s tiene el > atributo 'method', se establecer? un bloqueo sobre el primer argumento > pasado a la funci?n (que usualmente representa el objeto sobre el cual > se trabaja y que no quisieras sea accedido concurrentemente). > > Partiendo de esta idea, se generaliz? el concepto de atributos sobre > subrutinas de manera que el programador pueda poner cualquier cantidad > de atributos separados por comas. Un atributo es _cualquier_ > identificador (letras, d?gitos y gui?n bajo), y puede tener una lista de > cosas entre par?ntesis (el compilador verifica que los par?ntesis est?n > balanceados). Es importante notar que Perl no realiza actividades de > an?lisis sint?ctico ni sem?ntico sobre el atributo, sino que lo toma > "tal cual" y lo inyecta en el m?dulo siguiendo una estrategia simple. > > Supongamos que declaras > > package Grok; > use attributes; > ... > sub foo : bar(baz,qux), bleh { ... } > > luego, en _cualquier_ rutina dentro del package Grok puedes ejecutar > > my @attlist = attributes::get( \&foo ) > > y tendr?s @attlist = qw( bar(baz,qux) bleh ). Qu? hacer con esa > informaci?n es problema del programador, incluyendo el an?lisis de cada > elemento de la lista y su posible "aplicaci?n". > > Para simplificar estas tareas existe el m?dulo Attribute::Handlers, que > para el mismo ejemplo artificial se usar?a > > package Grok; > use Attribute::Handlers; > no warnings 'redefine'; > sub foo : bar(baz,qux), bleh { ... } > > pero le puedes agregar > > sub bar : ATTR(CODE) { > ?# Esta funci?n se ejecutar? durante la _compilaci?n_ para > ?# _cada_ funci?n que tenga atributo 'bar'. En este ejemplo, > ?# se ejecutar? cuando se compila 'foo'. > ?my ($package,$sym,$coderef,$codename,$data,$phase,$file,$line) = @_; > ?... > } > > Al compilar 'foo' en nuestro ejemplo, se invocar?a 'bar' recibiendo: > > $package = 'Grok' > $sym = *foo ?(el typeglob) > $coderef = \&foo (apuntador al c?digo de la rutina) > $codename = 'foo' > $data = referencia a un arreglo que tiene 'baz' y 'qux' como elementos > $phase de la compilaci?n (BEGIN, CHECK, INIT o END). > Nombre ($file) y l?nea ($line) del archivo donde est? la rutina. > > Entonces, todo lo que resta es que el programador de la clase decida qu? > hay que hacer, a tiempo de compilaci?n, con la rutina a la cual se le > puso alg?n atributo. Entre la cantidad de cosas que se pueden hacer, > est? analizar los atributos, _generar_ una nueva funci?n que "envuelva" > al coderef de la funci?n original, y reinstalarla en el nombre original > (con el mismo estilo de lo que hace Memoize). Por ejemplo, imagina un > atributo 'Logger' que debe "hacer que cada vez que se ingrese a la > rutina se escriba un mensaje en una bit?cora", entonces dentro del > manejador podr?a escribir algo como > > sub Logger : ATTR(CODE) { > ?my ($package,$sym,$coderef,$codename,$data,$phase,$file,$line) = @_; > ?# Verificaciones y quien sabe qu? otra cosa ... > ?my $newfunc = sub { > ? ?log_somewhere("Ingresando $codename"); > ? ?$coderef->( @_ ); ?# La invocaci?n "original" > ? ?log_somewhere("Terminando $codename"); > ?} > ?${$sym}{CODE} = $newfunc; > } > > Muy resumido: construyo una funci?n an?nima que hace el log, invoca a la > funci?n original pasando los argumentos que se pasar?an a la funci?n > cuando fuese invocada y vuelve a hacer el log. Luego, tomo esa funci?n y > la instalo en la tabla de s?mbolos original para que cuando llamen a la > funci?n original, en realidad llamen a mi funci?n "envoltorio" de la > funci?n original. > > Catalyst saca provecho de esto de manera similar: cuando le pones > atributos a los m?todos de _tu_ clase, a tiempo de compilaci?n son > manipuladas por los m?todos provistos por Catalyst para envolverlas en > funciones adecuadas. Esas funciones envoltorio est?n parametrizadas de > acuerdo a las cosas que permite Catalyst en los atributos. > > Entonces, los atributos para subrutinas son _cadenas_, que han de ser > procesadas a tiempo de _compilaci?n_ por rutinas escritas por el > _programador_ con el prop?sito de alterar "algo" en las funciones > originales. Otra manera de verlo > > sub original : alterala(con,estos,par?metros) { ... } > > quiere decir que al compilar 'original' habr? que invocar a la rutina > 'alterala' para que "haga alguna alteraci?n" sobre el c?digo de > 'original' usando la lista de par?metros ('con', 'estos', 'par?metros'). > ?Cu?l alteraci?n? La que est? implantada en 'alterala' y que puede sacar > provecho de toda la flexibilidad de typeglobs, coderefs, clausuras y > modificaci?n din?mica de c?digo (como usar B::Deparse y otras hierbas). > > Si, no es f?cil de entender a la primera. > > -- > Ernesto Hern?ndez-Novich - Linux 2.6.28 i686 - Unix: Live free or die! > Geek by nature, Linux by choice, Debian of course. > If you can't aptitude it, it isn't useful or doesn't exist. > GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 > > > _______________________________________________ > caracas-pm mailing list > caracas-pm at pm.org > http://mail.pm.org/mailman/listinfo/caracas-pm From holzem at cantv.net Fri Jan 29 15:48:26 2010 From: holzem at cantv.net (holzem at cantv.net) Date: Fri, 29 Jan 2010 19:18:26 -0430 Subject: [caracas-pm] HEX Message-ID: <380-220101529234826541@cantv.net> An HTML attachment was scrubbed... URL: From jesus at unixsup.com Fri Jan 29 19:25:50 2010 From: jesus at unixsup.com (JesUs Lima) Date: Fri, 29 Jan 2010 23:25:50 -0400 Subject: [caracas-pm] HEX In-Reply-To: <380-220101529234826541@cantv.net> References: <380-220101529234826541@cantv.net> Message-ID: <20100130032416.M68783@unixsup.com> Hola, $excl = "\\xe5" man printf ... ?? \\???? backslash ... Salu2, JesUs. www.unixsup.com ---------- Original Message ----------- From: "holzem at cantv.net" To: caracas-pm at pm.org Sent: Fri, 29 Jan 2010 19:18:26 -0430 Subject: [caracas-pm] HEX > Hola Mongers, > > uso algo como esto para mandar variables en hex a unpuerto serial: > > $co ="\xe4\x12\x00\x03\x10\xe5"; > ??? print $handle$co; > > Tambien funciona eso: > > $co ="\xe4\x12\x00\x03\x10"; > $excl = "\xe5" > > print $handle$co; > print $handle $excl; > > ? > $excl es el resultado devarios XOR; pero no logro de 'formatearlo' > para que se parece a algocomo "\xe5". > > Lo trate con printf y substr. > > Alguien tiene unaidea? > > Hans > ? ------- End of Original Message ------- -------------- next part -------------- An HTML attachment was scrubbed... URL: From holzem at cantv.net Sun Jan 31 09:53:09 2010 From: holzem at cantv.net (holzem at cantv.net) Date: Sun, 31 Jan 2010 13:23:09 -0430 Subject: [caracas-pm] printf Hex Message-ID: <380-22010103117539734@cantv.net> An HTML attachment was scrubbed... URL: From lem at itverx.com.ve Sun Jan 31 10:09:50 2010 From: lem at itverx.com.ve (Luis E. =?ISO-8859-1?Q?Mu=F1oz?=) Date: Sun, 31 Jan 2010 13:39:50 -0430 Subject: [caracas-pm] printf Hex In-Reply-To: <380-22010103117539734@cantv.net> References: <380-22010103117539734@cantv.net> Message-ID: <1264961390.4733.7.camel@maclem-ether.ius.cc> On Sun, 2010-01-31 at 13:23 -0430, holzem at cantv.net wrote: > si tengo esto: $excl = "\xed"; > > Que es? Un valor hex o un string? Es un string que contiene un caracter, que escribiste en hexadecimal (0xED). > No logro imprimirlo usando printf. S?, lo est?s imprimiendo, s?lo que el resultado no es visible. Mira esto: lem at lemtop:~$ perl -e 'print "\xed"' lem at lemtop:~$ perl -e 'print "\xed"' | wc -c 1 lem at lemtop:~$ perl -e 'print "\xed"' | od -h 0000000 00ed 0000001 El primer comando "no muestra nada". El segundo comando, usa el comando wc para contar la cantidad de caracteres que le enviaron por su entrada est?ndar. Dice que recibi? un caracter... El tercer comando, muestra en hexadecimal, cu?l fue la entrada, que correspone con el caracter ed que acabamos de enviar. > Tengo que mandar este $excl atravez del puerto serial. > > Lo hago asi: print $handle $excl; &nbs p; y funciona. Exacto. > Ahora: como hago con una variable hex, que tiene el valor 0xed, > usando printf para que me funciona igual? Construyes la plantilla de printf usando %c, como en este ejemplo lem at lemtop:~$ perl -e 'printf "%c", 0xed' | od -h 0000000 00ed 0000001 lem at lemtop:~$ perl -e 'printf "%c", 0xed' | wc -c 1 Tambi?n puedes querer echarle un ojo a pack() y unpack() en caso de que quieras armar secuencias m?s complejas. Saludos -lem